From 64f69fae8355e52eef42c806bdc238b5d158f9cc Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 23 May 2024 15:00:05 -0300 Subject: [PATCH 1/4] criada view de quantidade de viagens agrupadas por hora --- models/projeto_subsidio_sppo/CHANGELOG.md | 6 +++ .../quantidade_viagem_hora.sql | 42 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 models/projeto_subsidio_sppo/quantidade_viagem_hora.sql diff --git a/models/projeto_subsidio_sppo/CHANGELOG.md b/models/projeto_subsidio_sppo/CHANGELOG.md index a81b89f8..9b1a0ff1 100644 --- a/models/projeto_subsidio_sppo/CHANGELOG.md +++ b/models/projeto_subsidio_sppo/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog - projeto_subsidio_sppo +## [6.0.5] - 2024-05-23 + +### Adicionado + +- Adicionado a view de quantidade de viagens planejada e viagens apuradas agrupadas por hora no modelo `quantidade_viagem_hora.sql` + ## [6.0.5] - 2024-05-08 ### Removido diff --git a/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql b/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql new file mode 100644 index 00000000..29c61500 --- /dev/null +++ b/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql @@ -0,0 +1,42 @@ +{{ + config( + materialized="view" + ) +}} + +WITH + viagem_planejada_hora AS ( + SELECT + data, + EXTRACT(Hour + FROM + inicio_periodo) AS hora, + servico + FROM + {{ref('viagem_planejada')}} +), + viagem_completa_hora AS ( + SELECT + data, + EXTRACT(Hour + FROM + inicio_periodo) AS hora, + servico_realizado AS servico + FROM + {{ref('viagem_completa')}} +) +SELECT + *, + COUNT(vp.hora) AS viagens_planejadas, + COUNT(vc.hora) AS viagens_completas +FROM + viagem_planejada_hora vp +FULL OUTER JOIN + viagem_completa_hora vc +USING + (data, + hora,servico) +GROUP BY + data, + hora, servico +order by data, hora \ No newline at end of file From bddd3125fc3e2781416f2619d1f53553434e4594 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 23 May 2024 15:11:33 -0300 Subject: [PATCH 2/4] remove agrupamento por servico --- models/projeto_subsidio_sppo/quantidade_viagem_hora.sql | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql b/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql index 29c61500..c5ae07bc 100644 --- a/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql +++ b/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql @@ -11,7 +11,6 @@ WITH EXTRACT(Hour FROM inicio_periodo) AS hora, - servico FROM {{ref('viagem_planejada')}} ), @@ -21,7 +20,6 @@ WITH EXTRACT(Hour FROM inicio_periodo) AS hora, - servico_realizado AS servico FROM {{ref('viagem_completa')}} ) @@ -35,8 +33,8 @@ FULL OUTER JOIN viagem_completa_hora vc USING (data, - hora,servico) + hora) GROUP BY data, - hora, servico + hora order by data, hora \ No newline at end of file From 948baf5c66e4c53976cbe02b21036d269465a7ea Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 23 May 2024 17:57:15 -0300 Subject: [PATCH 3/4] =?UTF-8?q?adiciona=20descri=C3=A7=C3=A3odas=20colunas?= =?UTF-8?q?=20de=20quantidade=5Fviagem=5Fhora?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/projeto_subsidio_sppo/CHANGELOG.md | 2 +- models/projeto_subsidio_sppo/schema.yml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/models/projeto_subsidio_sppo/CHANGELOG.md b/models/projeto_subsidio_sppo/CHANGELOG.md index 9b1a0ff1..a2081f47 100644 --- a/models/projeto_subsidio_sppo/CHANGELOG.md +++ b/models/projeto_subsidio_sppo/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog - projeto_subsidio_sppo -## [6.0.5] - 2024-05-23 +## [6.1.0] - 2024-05-23 ### Adicionado diff --git a/models/projeto_subsidio_sppo/schema.yml b/models/projeto_subsidio_sppo/schema.yml index f44c198a..1a48db20 100644 --- a/models/projeto_subsidio_sppo/schema.yml +++ b/models/projeto_subsidio_sppo/schema.yml @@ -826,3 +826,15 @@ models: description: "String que indica a versão atual do conjunto de dados GTFS (Válida a partir de 2024-04-01)." - name: tipo_os description: "Tipo de Ordem de Serviço (ex: 'Regular', 'Extraordinária - Verão', válida a partir de 2024-04-01)." + - name: quantidade_viagem_hora + description: "Quantidade de viagens planejadas e completas agrupadas por hora." + columns: + - name: data + description: "Data da viagem." + - name: hora + description: "Hora da viagem." + - name: viagens_planejadas + description: "Quantidade de viagens planejadas." + - name: viagens_completas + description: "Quantidade de viagens completas." + From afbf06017efda5f54fb5badf67c037d0dee68dbd Mon Sep 17 00:00:00 2001 From: vtr363 Date: Tue, 28 May 2024 14:43:17 -0300 Subject: [PATCH 4/4] refatora view de viagem_hora para refletir o modelo solicitado --- .../quantidade_viagem_hora.sql | 203 ++++++++++++++++-- 1 file changed, 181 insertions(+), 22 deletions(-) diff --git a/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql b/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql index c5ae07bc..092346a7 100644 --- a/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql +++ b/models/projeto_subsidio_sppo/quantidade_viagem_hora.sql @@ -3,38 +3,197 @@ materialized="view" ) }} - WITH + viagem AS ( + SELECT + DISTINCT p.consorcio, + p.servico, + v.id_viagem, + p.inicio_periodo, + FROM ( + SELECT + DISTINCT consorcio, + vista, + DATA, + tipo_dia, + trip_id_planejado AS trip_id, + servico, + inicio_periodo, + fim_periodo, + id_tipo_trajeto + FROM + {{ ref('viagem_planejada') }} + WHERE + DATA = "2024-05-26" ) p + INNER JOIN ( + SELECT + DISTINCT * + FROM + {{ ref('viagem_conformidade') }} + WHERE + DATA = "2024-05-26" ) v + ON + v.trip_id = p.trip_id + AND v.data = p.data ), viagem_planejada_hora AS ( SELECT - data, - EXTRACT(Hour + servico AS trip_short_name, + consorcio, + inicio_periodo, + COUNT(id_viagem) AS quantidade_viagens_planejadas, + CASE + WHEN EXTRACT(HOUR FROM inicio_periodo) BETWEEN 0 AND 3 THEN '00:00 - 03:59' + WHEN EXTRACT(HOUR + FROM + inicio_periodo) BETWEEN 4 + AND 7 THEN '04:00 - 07:59' + WHEN EXTRACT(HOUR FROM inicio_periodo) BETWEEN 8 AND 11 THEN '08:00 - 11:59' + WHEN EXTRACT(HOUR FROM - inicio_periodo) AS hora, + inicio_periodo) BETWEEN 12 + AND 15 THEN '12:00 - 15:59' + WHEN EXTRACT(HOUR FROM inicio_periodo) BETWEEN 16 AND 19 THEN '16:00 - 19:59' + WHEN EXTRACT(HOUR + FROM + inicio_periodo) BETWEEN 20 + AND 23 THEN '20:00 - 23:59' + END + AS periodo FROM - {{ref('viagem_planejada')}} -), + -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` + viagem + -- WHERE + -- DATA = "2024-05-26" + GROUP BY + servico, + consorcio, + periodo, + inicio_periodo + ORDER BY + servico, + consorcio, + periodo ), viagem_completa_hora AS ( SELECT - data, - EXTRACT(Hour + consorcio, + servico_realizado AS trip_short_name, + COUNT(id_viagem) AS quantidade_viagens_completas, + CASE + WHEN EXTRACT(HOUR FROM inicio_periodo) BETWEEN 0 AND 3 THEN '00:00 - 03:59' + WHEN EXTRACT(HOUR + FROM + inicio_periodo) BETWEEN 4 + AND 7 THEN '04:00 - 07:59' + WHEN EXTRACT(HOUR FROM inicio_periodo) BETWEEN 8 AND 11 THEN '08:00 - 11:59' + WHEN EXTRACT(HOUR + FROM + inicio_periodo) BETWEEN 12 + AND 15 THEN '12:00 - 15:59' + WHEN EXTRACT(HOUR FROM inicio_periodo) BETWEEN 16 AND 19 THEN '16:00 - 19:59' + WHEN EXTRACT(HOUR FROM - inicio_periodo) AS hora, + inicio_periodo) BETWEEN 20 + AND 23 THEN '20:00 - 23:59' + END + AS periodo FROM - {{ref('viagem_completa')}} -) + {{ ref('viagem_completa') }} + WHERE + DATA = "2024-05-26" + GROUP BY + consorcio, + servico_realizado, + periodo + ORDER BY + consorcio, + servico_realizado, + periodo ) SELECT - *, - COUNT(vp.hora) AS viagens_planejadas, - COUNT(vc.hora) AS viagens_completas + p.trip_short_name, + p.consorcio, + COALESCE(SUM(CASE + WHEN p.periodo = '00:00 - 03:59' THEN quantidade_viagens_planejadas + END + ), 0) AS `00:00 - 03:59 partidas_planejadas`, + COALESCE(SUM(CASE + WHEN p.periodo = '04:00 - 07:59' THEN quantidade_viagens_planejadas + END + ), 0) AS `04:00 - 07:59 partidas_planejadas`, + COALESCE(SUM(CASE + WHEN p.periodo = '08:00 - 11:59' THEN quantidade_viagens_planejadas + END + ), 0) AS `08:00 - 11:59 partidas_planejadas`, + COALESCE(SUM(CASE + WHEN p.periodo = '12:00 - 15:59' THEN quantidade_viagens_planejadas + END + ), 0) AS `12:00 - 15:59 partidas_planejadas`, + COALESCE(SUM(CASE + WHEN p.periodo = '16:00 - 19:59' THEN quantidade_viagens_planejadas + END + ), 0) AS `16:00 - 19:59 partidas_planejadas`, + COALESCE(SUM(CASE + WHEN p.periodo = '20:00 - 23:59' THEN quantidade_viagens_planejadas + END + ), 0) AS `20:00 - 23:59 partidas_planejadas`, + COALESCE(SUM(CASE + WHEN c.periodo = '00:00 - 03:59' THEN quantidade_viagens_completas + END + ), 0) AS `00:00 - 03:59 partidas_apuradas`, + COALESCE(SUM(CASE + WHEN c.periodo = '04:00 - 07:59' THEN quantidade_viagens_completas + END + ), 0) AS `04:00 - 07:59 partidas_apuradas`, + COALESCE(SUM(CASE + WHEN c.periodo = '08:00 - 11:59' THEN quantidade_viagens_completas + END + ), 0) AS `08:00 - 11:59 partidas_apuradas`, + COALESCE(SUM(CASE + WHEN c.periodo = '12:00 - 15:59' THEN quantidade_viagens_completas + END + ), 0) AS `12:00 - 15:59 partidas_apuradas`, + COALESCE(SUM(CASE + WHEN c.periodo = '16:00 - 19:59' THEN quantidade_viagens_completas + END + ), 0) AS `16:00 - 19:59 partidas_apuradas`, + COALESCE(SUM(CASE + WHEN c.periodo = '20:00 - 23:59' THEN quantidade_viagens_completas + END + ), 0) AS `20:00 - 23:59 partidas_apuradas`, + COALESCE(SUM(CASE + WHEN p.periodo = '00:00 - 03:59' THEN ROUND(quantidade_viagens_completas * 100.0 / NULLIF(quantidade_viagens_planejadas, 0), 2) + END + ), 0) AS `00:00 - 03:59 perc_realizado`, + COALESCE(SUM(CASE + WHEN p.periodo = '04:00 - 07:59' THEN ROUND(quantidade_viagens_completas * 100.0 / NULLIF(quantidade_viagens_planejadas, 0), 2) + END + ), 0) AS `04:00 - 07:59 perc_realizado`, + COALESCE(SUM(CASE + WHEN p.periodo = '08:00 - 11:59' THEN ROUND(quantidade_viagens_completas * 100.0 / NULLIF(quantidade_viagens_planejadas, 0), 2) + END + ), 0) AS `08:00 - 11:59 perc_realizado`, + COALESCE(SUM(CASE + WHEN p.periodo = '12:00 - 15:59' THEN ROUND(quantidade_viagens_completas * 100.0 / NULLIF(quantidade_viagens_planejadas, 0), 2) + END + ), 0) AS `12:00 - 15:59 perc_realizado`, + COALESCE(SUM(CASE + WHEN p.periodo = '16:00 - 19:59' THEN ROUND(quantidade_viagens_completas * 100.0 / NULLIF(quantidade_viagens_planejadas, 0), 2) + END + ), 0) AS `16:00 - 19:59 perc_realizado`, + COALESCE(SUM(CASE + WHEN p.periodo = '20:00 - 23:59' THEN ROUND(quantidade_viagens_completas * 100.0 / NULLIF(quantidade_viagens_planejadas, 0), 2) + END + ), 0) AS `20:00 - 23:59 perc_realizado`, + SUM(quantidade_viagens_completas) AS total_apur, + SUM(quantidade_viagens_planejadas) AS total_plan FROM - viagem_planejada_hora vp -FULL OUTER JOIN - viagem_completa_hora vc + viagem_planejada_hora p +LEFT JOIN + viagem_completa_hora c USING - (data, - hora) + (trip_short_name) GROUP BY - data, - hora -order by data, hora \ No newline at end of file + p.trip_short_name, + p.consorcio +ORDER BY + p.trip_short_name, + p.consorcio \ No newline at end of file