From f2493ad34ae9ec06a47d5af4962d453638b99b65 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 3 Oct 2024 18:18:43 -0300 Subject: [PATCH 01/23] cria a view sumario_servico_dia_pagamento_historico --- ...umario_servico_dia_pagamento_historico.sql | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql diff --git a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql new file mode 100644 index 00000000..2e9c24da --- /dev/null +++ b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql @@ -0,0 +1,84 @@ +WITH + pre_faixa_horaria AS ( + SELECT + data, + tipo_dia, + consorcio, + servico, + vista, + viagens, + km_apurada, + km_planejada, + perc_km_planejada, + valor_subsidio_pago, + valor_penalidade + FROM + {{ ref('sumario_servico_dia_historico')}} + -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` + WHERE + data < "2024-08-16" ), + planejada AS ( + SELECT + DISTINCT data, + consorcio, + servico, + vista + FROM + {{ ref('viagem_planejada')}} + -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` + WHERE + data >= "2024-08-16" + AND (id_tipo_trajeto = 0 + OR id_tipo_trajeto IS NULL) + AND FORMAT_TIME("%T", TIME(faixa_horaria_inicio)) != "00:00:00" ), + pagamento AS ( + SELECT + data, + tipo_dia, + consorcio, + servico, + vista, + viagens_dia AS viagens, + CASE + WHEN data >= "2024-09-01" THEN COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + ELSE COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + COALESCE(km_apurada_n_vistoriado, 0) + COALESCE(km_apurada_n_licenciado, 0) + END + AS km_apurada, + km_planejada_dia AS km_planejada, + valor_a_pagar AS valor_subsidio_pago, + valor_penalidade + FROM + {{ ref('sumario_servico_dia_pagamento')}} + -- `rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` + LEFT JOIN + planejada + USING + (data, + servico, + consorcio) + WHERE + data >= "2024-08-16" ), + pos_faixa_horaria AS ( + SELECT + data, + tipo_dia, + consorcio, + servico, + vista, + viagens, + km_apurada, + km_planejada, + 100*km_apurada/km_planejada AS perc_km_planejada, + valor_subsidio_pago, + valor_penalidade + FROM + pagamento ) +SELECT + * +FROM + pre_faixa_horaria +UNION ALL +SELECT + * +FROM + pos_faixa_horaria \ No newline at end of file From 19b7eaa173d0b4a16e6ce1cc81a8aee97829c9ae Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 3 Oct 2024 18:20:17 -0300 Subject: [PATCH 02/23] atualiza changelog --- queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md b/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md index d397b9ed..c4ea3450 100644 --- a/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md +++ b/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog - dashboard_subsidio_sppo_v2 +## [1.0.2] - 2024-10-03 + +### Adicionado + +- Cria modelo `sumario_servico_dia_pagamento_historico` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) + ## [1.0.1] - 2024-09-20 ### Alterado From 5f6aa0dbc84f8a04021b037b8440616cf12367de Mon Sep 17 00:00:00 2001 From: vtr363 Date: Fri, 4 Oct 2024 09:42:24 -0300 Subject: [PATCH 03/23] =?UTF-8?q?substitui=C3=A7=C3=A3o=20de=20datas=20por?= =?UTF-8?q?=20variaveis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- queries/dbt_project.yml | 2 ++ .../sumario_servico_dia_pagamento_historico.sql | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index 7eda4f61..cb39b73f 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -123,6 +123,8 @@ vars: DATA_SUBSIDIO_V8_INICIO: "2024-07-19" # Feature Apuração por faixa horária DATA_SUBSIDIO_V9_INICIO: "2024-08-16" + # Feature desconsideração de km não vistoriado e não licenciado + DATA_SUBSIDIO_V9A_INICIO: "2024-09-01" # valor_subsidio: "`rj-smtr-dev.projeto_subsidio_sppo.valor_subsidio`" # Recursos # diff --git a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql index 2e9c24da..cf10cfbb 100644 --- a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql +++ b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql @@ -16,7 +16,7 @@ WITH {{ ref('sumario_servico_dia_historico')}} -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` WHERE - data < "2024-08-16" ), + data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") ), planejada AS ( SELECT DISTINCT data, @@ -27,7 +27,7 @@ WITH {{ ref('viagem_planejada')}} -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` WHERE - data >= "2024-08-16" + data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") AND (id_tipo_trajeto = 0 OR id_tipo_trajeto IS NULL) AND FORMAT_TIME("%T", TIME(faixa_horaria_inicio)) != "00:00:00" ), @@ -40,7 +40,7 @@ WITH vista, viagens_dia AS viagens, CASE - WHEN data >= "2024-09-01" THEN COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + WHEN data >= DATE("{{ var("DATA_SUBSIDIO_V9A_INICIO") }}") THEN COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) ELSE COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + COALESCE(km_apurada_n_vistoriado, 0) + COALESCE(km_apurada_n_licenciado, 0) END AS km_apurada, From 97f18899cfc22d5a254a7c5049771e96a904efc6 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Fri, 4 Oct 2024 10:52:41 -0300 Subject: [PATCH 04/23] move sumario_servico_dia_pagamento_historico para o dataset monitoramento --- queries/dbt_project.yml | 5 ++++- queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md | 6 ------ queries/models/monitoramento/CHANGELOG.md | 7 +++++++ .../sumario_servico_dia_pagamento_historico.sql | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 queries/models/monitoramento/CHANGELOG.md rename queries/models/{dashboard_subsidio_sppo_v2 => monitoramento}/sumario_servico_dia_pagamento_historico.sql (97%) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index cb39b73f..ef4b1ebf 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -124,7 +124,7 @@ vars: # Feature Apuração por faixa horária DATA_SUBSIDIO_V9_INICIO: "2024-08-16" # Feature desconsideração de km não vistoriado e não licenciado - DATA_SUBSIDIO_V9A_INICIO: "2024-09-01" + DATA_SUBSIDIO_V10_INICIO: "2024-09-01" # valor_subsidio: "`rj-smtr-dev.projeto_subsidio_sppo.valor_subsidio`" # Recursos # @@ -323,3 +323,6 @@ models: staging: +materialized: view +schema: transito_staging + monitoramento: + +materialized: view + +schema: monitoramento diff --git a/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md b/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md index c4ea3450..d397b9ed 100644 --- a/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md +++ b/queries/models/dashboard_subsidio_sppo_v2/CHANGELOG.md @@ -1,11 +1,5 @@ # Changelog - dashboard_subsidio_sppo_v2 -## [1.0.2] - 2024-10-03 - -### Adicionado - -- Cria modelo `sumario_servico_dia_pagamento_historico` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) - ## [1.0.1] - 2024-09-20 ### Alterado diff --git a/queries/models/monitoramento/CHANGELOG.md b/queries/models/monitoramento/CHANGELOG.md new file mode 100644 index 00000000..4de5434f --- /dev/null +++ b/queries/models/monitoramento/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog - monitoramento + +## [1.0.0] - 2024-10-04 + +### Adicionado + +- Cria modelo `sumario_servico_dia_pagamento_historico` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) \ No newline at end of file diff --git a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql b/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql similarity index 97% rename from queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql rename to queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql index cf10cfbb..1585a6ee 100644 --- a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_pagamento_historico.sql +++ b/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql @@ -40,7 +40,7 @@ WITH vista, viagens_dia AS viagens, CASE - WHEN data >= DATE("{{ var("DATA_SUBSIDIO_V9A_INICIO") }}") THEN COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + WHEN data >= DATE("{{ var("DATA_SUBSIDIO_V10_INICIO") }}") THEN COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) ELSE COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + COALESCE(km_apurada_n_vistoriado, 0) + COALESCE(km_apurada_n_licenciado, 0) END AS km_apurada, From 5bdd44c005b0f2fbd342844828a8fb71bca8e8e9 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Mon, 21 Oct 2024 09:51:38 -0300 Subject: [PATCH 05/23] cria modelo sumario_servico_dia_tipo_viagem_historico --- ...ario_servico_dia_tipo_viagem_historico.sql | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql diff --git a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql new file mode 100644 index 00000000..b5cf0e3c --- /dev/null +++ b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql @@ -0,0 +1,48 @@ +WITH + pre_faixa_horaria AS ( + SELECT + data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado, + viagens, + km_apurada + FROM + {{ ref('sumario_servico_tipo_viagem_dia')}} + -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` + WHERE + data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + ), + pos_faixa_horaria AS ( + SELECT + data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado, + sum(viagens_faixa) AS viagens, + sum(km_apurada_faixa) AS km_apurada + FROM + {{ ref('subsidio_faixa_servico_dia_tipo_viagem')}} + -- `rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` + WHERE + data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + and tipo_viagem != "Sem viagem apurada" + GROUP by data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado) +SELECT + * +FROM + pre_faixa_horaria +UNION ALL +SELECT + * +FROM + pos_faixa_horaria \ No newline at end of file From b69c809416c773449f9c43fb122d4b1b3e357c79 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 12:52:13 +0000 Subject: [PATCH 06/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../sumario_servico_dia_tipo_viagem_historico.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql index b5cf0e3c..f0173ab9 100644 --- a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql +++ b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql @@ -29,13 +29,13 @@ WITH {{ ref('subsidio_faixa_servico_dia_tipo_viagem')}} -- `rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") and tipo_viagem != "Sem viagem apurada" GROUP by data, tipo_dia, consorcio, servico, - tipo_viagem, + tipo_viagem, indicador_ar_condicionado) SELECT * From 586678d8f519faf20aabe0f2647dc6d1c8408901 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Tue, 22 Oct 2024 10:34:53 -0300 Subject: [PATCH 07/23] cria modelo monitoramento_viagem_transacao --- .../monitoramento_viagem_transacao.sql | 266 ++++++++++++++++++ ...umario_servico_dia_pagamento_historico.sql | 5 + ...ario_servico_dia_tipo_viagem_historico.sql | 5 + 3 files changed, 276 insertions(+) create mode 100644 queries/models/monitoramento/monitoramento_viagem_transacao.sql diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql new file mode 100644 index 00000000..119403df --- /dev/null +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -0,0 +1,266 @@ +{{ + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + incremental_strategy="insert_overwrite", + alias='viagem_transacao', + ) +}} + +WITH + -- 1. Transações Jaé + transacao AS ( + SELECT + id_veiculo, + datetime_transacao + FROM + -- `rj-smtr-dev`.`br_rj_riodejaneiro_bilhetagem`.`transacao` + rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao + WHERE + data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} + ), + -- 2. Transações RioCard + transacao_riocard AS ( + SELECT + id_veiculo, + datetime_transacao + FROM + -- `rj-smtr-dev`.`br_rj_riodejaneiro_bilhetagem`.`transacao_riocard` + rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard + WHERE + data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} + ), + -- 3. GPS Validador + gps_validador AS ( + SELECT + data, + datetime_gps, + id_veiculo, + id_validador, + estado_equipamento, + latitude, + longitude + FROM + -- `rj-smtr-dev`.`br_rj_riodejaneiro_bilhetagem`.`gps_validador` + rj-smtr.br_rj_riodejaneiro_bilhetagem.gps_validador + WHERE + data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} + AND (latitude != 0 OR longitude != 0) + ), + -- 4. Viagens realizadas + viagem AS ( + SELECT + data, + servico_realizado AS servico, + datetime_partida, + datetime_chegada, + id_veiculo, + id_viagem, + sentido, + distancia_planejada + FROM + `rj-smtr.projeto_subsidio_sppo.viagem_completa` + -- rj-smtr.projeto_subsidio_sppo.viagem_completa + WHERE + data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE( "{{ var("end_date") }}" ) + {% endif %} + ), + -- 5. Status dos veículos + veiculos AS ( + SELECT + data, + id_veiculo, + status + FROM + -- `rj-smtr-dev`.`veiculo`.`sppo_veiculo_dia` + rj-smtr.veiculo.sppo_veiculo_dia + WHERE + data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE( "{{ var("end_date") }}" ) + {% endif %} + ), + -- 6. Viagem, para fins de contagem de passageiros, com tolerância de 30 minutos apenas para a primeira viagem + viagem_com_tolerancia AS ( + SELECT + v.*, + LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) AS viagem_anterior_chegada, + CASE + WHEN LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) IS NULL THEN + DATETIME(TIMESTAMP_SUB(datetime_partida, INTERVAL 30 MINUTE)) + ELSE datetime_partida + END AS datetime_partida_com_tolerancia + FROM + viagem AS v + ), + -- 7. Contagem de transações Jaé + transacao_contagem AS ( + SELECT + v.data, + v.id_viagem, + COUNT(t.datetime_transacao) AS quantidade_transacao + FROM + transacao AS t + JOIN + viagem_com_tolerancia AS v + ON + t.id_veiculo = SUBSTR(v.id_veiculo, 2) + AND t.datetime_transacao BETWEEN v.datetime_partida_com_tolerancia AND v.datetime_chegada + GROUP BY + v.data, v.id_viagem + ), + -- 5. Contagem de transações RioCard + transacao_riocard_contagem AS ( + SELECT + v.data, + v.id_viagem, + COUNT(tr.datetime_transacao) AS quantidade_transacao_riocard + FROM + transacao_riocard AS tr + JOIN + viagem_com_tolerancia AS v + ON + tr.id_veiculo = SUBSTR(v.id_veiculo, 2) + AND tr.datetime_transacao BETWEEN v.datetime_partida_com_tolerancia AND v.datetime_chegada + GROUP BY + v.data, v.id_viagem + ), + -- 6. Ajusta estado do equipamento + -- Agrupa mesma posição para mesmo validador e veículo, mantendo preferencialmente o estado do equipamento "ABERTO" + estado_equipamento_aux AS ( + SELECT + data, + id_validador, + id_veiculo, + latitude, + longitude, + IF(COUNT(CASE WHEN estado_equipamento = "ABERTO" THEN 1 END) >= 1, "ABERTO", "FECHADO") AS estado_equipamento, + MIN(datetime_gps) AS datetime_gps, + FROM + gps_validador + GROUP BY + 1, + 2, + 3, + 4, + 5 + ), + -- 7. Relacionamento entre estado do equipamento e viagem + gps_validador_viagem AS ( + SELECT + v.data, + e.datetime_gps, + v.id_viagem, + e.id_validador, + e.estado_equipamento, + e.latitude, + e.longitude + FROM + estado_equipamento_aux AS e + JOIN + viagem AS v + ON + e.id_veiculo = SUBSTR(v.id_veiculo, 2) + AND e.datetime_gps BETWEEN v.datetime_partida AND v.datetime_chegada + ), + -- 8. Calcula a porcentagem de estado do equipamento "ABERTO" por validador e viagem + estado_equipamento_perc AS ( + SELECT + data, + id_viagem, + id_validador, + COUNTIF(estado_equipamento = "ABERTO") / COUNT(*) AS percentual_estado_equipamento_aberto + FROM + gps_validador_viagem + GROUP BY + 1, + 2, + 3 + ), + -- 9. Considera o validador com maior porcentagem de estado do equipamento "ABERTO" por viagem + estado_equipamento_max_perc AS ( + SELECT + data, + id_viagem, + MAX_BY(id_validador, percentual_estado_equipamento_aberto) AS id_validador, + MAX(percentual_estado_equipamento_aberto) AS percentual_estado_equipamento_aberto + FROM + estado_equipamento_perc + GROUP BY + 1, + 2 + ), + -- 10. Verifica se a viagem possui estado do equipamento "ABERTO" em pelo menos 80% dos registros + estado_equipamento_verificacao AS ( + SELECT + data, + id_viagem, + id_validador, + percentual_estado_equipamento_aberto, + IF(percentual_estado_equipamento_aberto >= 0.8 OR percentual_estado_equipamento_aberto IS NULL, TRUE, FALSE) AS indicador_estado_equipamento_aberto + FROM + viagem + LEFT JOIN + estado_equipamento_max_perc + USING + (data, id_viagem) + ) +SELECT + v.data, + v.id_viagem, + v.id_veiculo, + v.servico, + eev.id_validador, + CASE + WHEN v.data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + AND (COALESCE(tr.quantidade_transacao_riocard, 0) = 0 + OR COALESCE(eev.indicador_estado_equipamento_aberto, FALSE) = FALSE) + AND ve.status IN ("Licenciado com ar e não autuado", "Licenciado sem ar e não autuado") + THEN "Sem transação" + ELSE ve.status + END AS tipo_viagem, + v.sentido, + v.distancia_planejada, + COALESCE(t.quantidade_transacao, 0) AS quantidade_transacao, + COALESCE(tr.quantidade_transacao_riocard, 0) AS quantidade_transacao_riocard, + eev.percentual_estado_equipamento_aberto, + eev.indicador_estado_equipamento_aberto, + v.datetime_partida_com_tolerancia AS datetime_partida_bilhetagem, + v.datetime_partida, + v.datetime_chegada, + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao +FROM + viagem_com_tolerancia AS v +LEFT JOIN + veiculos AS ve +USING + (data, id_veiculo) +LEFT JOIN + transacao_contagem AS t +USING + (data, id_viagem) +LEFT JOIN + transacao_riocard_contagem AS tr +USING + (data, id_viagem) +LEFT JOIN + estado_equipamento_verificacao AS eev +USING + (data, id_viagem) + diff --git a/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql b/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql index 1585a6ee..ba978502 100644 --- a/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql +++ b/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql @@ -1,3 +1,8 @@ +{{ + config( + materialized="view", + ) +}} WITH pre_faixa_horaria AS ( SELECT diff --git a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql index f0173ab9..c5a40a1f 100644 --- a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql +++ b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql @@ -1,3 +1,8 @@ +{{ + config( + materialized="view", + ) +}} WITH pre_faixa_horaria AS ( SELECT From ca674859a176b818dc1e89442f05b4f1784f9117 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 13:35:11 +0000 Subject: [PATCH 08/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../models/monitoramento/monitoramento_viagem_transacao.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index 119403df..62fc36ad 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -36,7 +36,7 @@ WITH {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} + {% endif %} ), -- 3. GPS Validador gps_validador AS ( @@ -77,7 +77,7 @@ WITH data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE( "{{ var("end_date") }}" ) + AND DATE( "{{ var("end_date") }}" ) {% endif %} ), -- 5. Status dos veículos @@ -263,4 +263,4 @@ LEFT JOIN estado_equipamento_verificacao AS eev USING (data, id_viagem) - + From b1d9a7d29a2701607d180bea2e64d1735116b3bf Mon Sep 17 00:00:00 2001 From: vtr363 Date: Tue, 22 Oct 2024 11:22:26 -0300 Subject: [PATCH 09/23] atualiza changelog e corrig referencias dos modelos --- queries/models/monitoramento/CHANGELOG.md | 2 +- .../monitoramento_viagem_transacao.sql | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/queries/models/monitoramento/CHANGELOG.md b/queries/models/monitoramento/CHANGELOG.md index 4dc39f21..6ec13865 100644 --- a/queries/models/monitoramento/CHANGELOG.md +++ b/queries/models/monitoramento/CHANGELOG.md @@ -4,7 +4,7 @@ ### Adicionado -- Cria modelo `sumario_servico_dia_pagamento_historico` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) +- Cria modelos `sumario_servico_dia_pagamento_historico`, `sumario_servico_dia_tipo_viagem_historico` e `monitoramento_viagem_transacao` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) ## [1.0.0] - 2024-10-21 diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index 62fc36ad..c78eb9f5 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -14,8 +14,8 @@ WITH id_veiculo, datetime_transacao FROM - -- `rj-smtr-dev`.`br_rj_riodejaneiro_bilhetagem`.`transacao` - rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao + {{ ref("transacao") }} + -- rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao WHERE data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") {% if is_incremental() %} @@ -29,8 +29,8 @@ WITH id_veiculo, datetime_transacao FROM - -- `rj-smtr-dev`.`br_rj_riodejaneiro_bilhetagem`.`transacao_riocard` - rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard + {{ ref("transacao_riocard") }} + -- rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard WHERE data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") {% if is_incremental() %} @@ -49,8 +49,8 @@ WITH latitude, longitude FROM - -- `rj-smtr-dev`.`br_rj_riodejaneiro_bilhetagem`.`gps_validador` - rj-smtr.br_rj_riodejaneiro_bilhetagem.gps_validador + {{ ref("gps_validador") }} + -- rj-smtr.br_rj_riodejaneiro_bilhetagem.gps_validador WHERE data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") {% if is_incremental() %} @@ -71,7 +71,7 @@ WITH sentido, distancia_planejada FROM - `rj-smtr.projeto_subsidio_sppo.viagem_completa` + {{ ref("viagem_completa") }} -- rj-smtr.projeto_subsidio_sppo.viagem_completa WHERE data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") @@ -87,8 +87,8 @@ WITH id_veiculo, status FROM - -- `rj-smtr-dev`.`veiculo`.`sppo_veiculo_dia` - rj-smtr.veiculo.sppo_veiculo_dia + {{ ref("sppo_veiculo_dia") }} + -- rj-smtr.veiculo.sppo_veiculo_dia WHERE data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") {% if is_incremental() %} From 9b4c6613c93592619e59ecb6d4d72d18fcf3cb4f Mon Sep 17 00:00:00 2001 From: vtr363 Date: Wed, 23 Oct 2024 12:44:40 -0300 Subject: [PATCH 10/23] Corrige tolerancia a partir da primeira viagem --- .../monitoramento_viagem_transacao.sql | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index c78eb9f5..a29151ca 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -14,10 +14,10 @@ WITH id_veiculo, datetime_transacao FROM - {{ ref("transacao") }} - -- rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao + -- {{ ref("transacao") }} + rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + data >= DATE("2024-10-01") {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) @@ -29,10 +29,10 @@ WITH id_veiculo, datetime_transacao FROM - {{ ref("transacao_riocard") }} - -- rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard + -- {{ ref("transacao_riocard") }} + rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + data >= DATE("2024-10-01") {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) @@ -49,10 +49,10 @@ WITH latitude, longitude FROM - {{ ref("gps_validador") }} - -- rj-smtr.br_rj_riodejaneiro_bilhetagem.gps_validador + -- {{ ref("gps_validador") }} + rj-smtr.br_rj_riodejaneiro_bilhetagem.gps_validador WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + data >= DATE("2024-10-01") {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) @@ -71,10 +71,10 @@ WITH sentido, distancia_planejada FROM - {{ ref("viagem_completa") }} - -- rj-smtr.projeto_subsidio_sppo.viagem_completa + -- {{ ref("viagem_completa") }} + rj-smtr.projeto_subsidio_sppo.viagem_completa WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + data >= DATE("2024-10-01") {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE( "{{ var("end_date") }}" ) @@ -87,10 +87,10 @@ WITH id_veiculo, status FROM - {{ ref("sppo_veiculo_dia") }} - -- rj-smtr.veiculo.sppo_veiculo_dia + -- {{ ref("sppo_veiculo_dia") }} + rj-smtr.veiculo.sppo_veiculo_dia WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + data >= DATE("2024-10-01") {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE( "{{ var("end_date") }}" ) @@ -100,11 +100,10 @@ WITH viagem_com_tolerancia AS ( SELECT v.*, - LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) AS viagem_anterior_chegada, CASE WHEN LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) IS NULL THEN DATETIME(TIMESTAMP_SUB(datetime_partida, INTERVAL 30 MINUTE)) - ELSE datetime_partida + ELSE LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) END AS datetime_partida_com_tolerancia FROM viagem AS v @@ -228,7 +227,7 @@ SELECT v.servico, eev.id_validador, CASE - WHEN v.data >= DATE("{{ var("DATA_SUBSIDIO_V8_INICIO") }}") + WHEN v.data >= DATE("2024-10-01") AND (COALESCE(tr.quantidade_transacao_riocard, 0) = 0 OR COALESCE(eev.indicador_estado_equipamento_aberto, FALSE) = FALSE) AND ve.status IN ("Licenciado com ar e não autuado", "Licenciado sem ar e não autuado") From 5e227d66907c4fc67f83a334b47082cf94cfb742 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Wed, 23 Oct 2024 14:07:37 -0300 Subject: [PATCH 11/23] corrige para iniciar 1 seg apos a ultima viagem --- queries/models/monitoramento/monitoramento_viagem_transacao.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index a29151ca..1c3fbc20 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -103,7 +103,7 @@ WITH CASE WHEN LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) IS NULL THEN DATETIME(TIMESTAMP_SUB(datetime_partida, INTERVAL 30 MINUTE)) - ELSE LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) + ELSE DATETIME(TIMESTAMP_ADD(LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida), INTERVAL 1 SECOND)) END AS datetime_partida_com_tolerancia FROM viagem AS v From eba149045d5e812c05630fa55879b8fd25cab068 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Wed, 23 Oct 2024 14:20:30 -0300 Subject: [PATCH 12/23] Refatora viagem_com_tolerancia --- .../monitoramento_viagem_transacao.sql | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index 1c3fbc20..2adbfc0c 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -97,16 +97,25 @@ WITH {% endif %} ), -- 6. Viagem, para fins de contagem de passageiros, com tolerância de 30 minutos apenas para a primeira viagem + -- Obtem o Datetime de chegada da viagem anterior + chegava_anterior AS ( + SELECT + v.*, + LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) AS viagem_anterior_chegada, + FROM + viagem AS v + ) + -- Adiciona tolerancia de 30 minutos a primeira viagem ou até o fim da viagem anterior caso exista viagem_com_tolerancia AS ( SELECT v.*, CASE - WHEN LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) IS NULL THEN + WHEN viagem_anterior_chegada IS NULL THEN DATETIME(TIMESTAMP_SUB(datetime_partida, INTERVAL 30 MINUTE)) - ELSE DATETIME(TIMESTAMP_ADD(LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida), INTERVAL 1 SECOND)) + ELSE DATETIME(TIMESTAMP_ADD(viagem_anterior_chegada, INTERVAL 1 SECOND)) END AS datetime_partida_com_tolerancia FROM - viagem AS v + chegava_anterior AS v ), -- 7. Contagem de transações Jaé transacao_contagem AS ( From 68f011961899fef9513a661f9d3a8f26f2236b9e Mon Sep 17 00:00:00 2001 From: vtr363 Date: Wed, 23 Oct 2024 14:53:58 -0300 Subject: [PATCH 13/23] corrige cte chegada_anterior --- .../models/monitoramento/monitoramento_viagem_transacao.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index 2adbfc0c..5de628a6 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -98,13 +98,13 @@ WITH ), -- 6. Viagem, para fins de contagem de passageiros, com tolerância de 30 minutos apenas para a primeira viagem -- Obtem o Datetime de chegada da viagem anterior - chegava_anterior AS ( + chegada_anterior AS ( SELECT v.*, LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) AS viagem_anterior_chegada, FROM viagem AS v - ) + ), -- Adiciona tolerancia de 30 minutos a primeira viagem ou até o fim da viagem anterior caso exista viagem_com_tolerancia AS ( SELECT @@ -115,7 +115,7 @@ WITH ELSE DATETIME(TIMESTAMP_ADD(viagem_anterior_chegada, INTERVAL 1 SECOND)) END AS datetime_partida_com_tolerancia FROM - chegava_anterior AS v + chegada_anterior AS v ), -- 7. Contagem de transações Jaé transacao_contagem AS ( From 596aec5fb26201dc14b905c397741360ba320ecd Mon Sep 17 00:00:00 2001 From: vtr363 Date: Mon, 9 Dec 2024 15:55:47 -0300 Subject: [PATCH 14/23] altera modelos de view para incremental --- .../sumario_servico_dia_historico.sql} | 25 +- ...ario_servico_dia_tipo_viagem_historico.sql | 53 ++ .../monitoramento_viagem_transacao.sql | 516 +++++++++--------- ...ario_servico_dia_tipo_viagem_historico.sql | 53 -- 4 files changed, 321 insertions(+), 326 deletions(-) rename queries/models/{monitoramento/sumario_servico_dia_pagamento_historico.sql => dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql} (76%) create mode 100644 queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql delete mode 100644 queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql diff --git a/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql similarity index 76% rename from queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql rename to queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql index ba978502..500c3a33 100644 --- a/queries/models/monitoramento/sumario_servico_dia_pagamento_historico.sql +++ b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql @@ -1,7 +1,9 @@ {{ - config( - materialized="view", - ) + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + incremental_strategy="insert_overwrite", + ) }} WITH pre_faixa_horaria AS ( @@ -21,7 +23,11 @@ WITH {{ ref('sumario_servico_dia_historico')}} -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` WHERE - data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") ), + data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} ), planejada AS ( SELECT DISTINCT data, @@ -53,16 +59,21 @@ WITH valor_a_pagar AS valor_subsidio_pago, valor_penalidade FROM - {{ ref('sumario_servico_dia_pagamento')}} + {{ ref('subsidio_sumario_servico_dia_pagamento')}} AS sdp -- `rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` LEFT JOIN - planejada + planejada AS P USING (data, servico, consorcio) WHERE - data >= "2024-08-16" ), + data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} + ), pos_faixa_horaria AS ( SELECT data, diff --git a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql new file mode 100644 index 00000000..0440bfe4 --- /dev/null +++ b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql @@ -0,0 +1,53 @@ +{{ + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + incremental_strategy="insert_overwrite", + ) +}} +with + pre_faixa_horaria as ( + select + data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado, + viagens, + km_apurada + from {{ ref("sumario_servico_tipo_viagem_dia") }} + -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` + where data < date("{{ var(" data_subsidio_v9_inicio ") }}") + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} + ), + pos_faixa_horaria as ( + select + data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado, + sum(viagens_faixa) as viagens, + sum(km_apurada_faixa) as km_apurada + from {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} + -- `rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` + where + data >= date("{{ var(" data_subsidio_v9_inicio ") }}") + and tipo_viagem != "Sem viagem apurada" + {% if is_incremental() %} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {% endif %} + group by + data, tipo_dia, consorcio, servico, tipo_viagem, indicador_ar_condicionado + ) +select * +from pre_faixa_horaria +union all +select * +from pos_faixa_horaria diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql index 5de628a6..b506e9c4 100644 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ b/queries/models/monitoramento/monitoramento_viagem_transacao.sql @@ -3,272 +3,256 @@ materialized="incremental", partition_by={"field": "data", "data_type": "date", "granularity": "day"}, incremental_strategy="insert_overwrite", - alias='viagem_transacao', + alias="viagem_transacao", ) }} -WITH - -- 1. Transações Jaé - transacao AS ( - SELECT - id_veiculo, - datetime_transacao - FROM - -- {{ ref("transacao") }} - rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao - WHERE - data >= DATE("2024-10-01") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} - ), - -- 2. Transações RioCard - transacao_riocard AS ( - SELECT - id_veiculo, - datetime_transacao - FROM - -- {{ ref("transacao_riocard") }} - rj-smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard - WHERE - data >= DATE("2024-10-01") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} - ), - -- 3. GPS Validador - gps_validador AS ( - SELECT - data, - datetime_gps, - id_veiculo, - id_validador, - estado_equipamento, - latitude, - longitude - FROM - -- {{ ref("gps_validador") }} - rj-smtr.br_rj_riodejaneiro_bilhetagem.gps_validador - WHERE - data >= DATE("2024-10-01") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} - AND (latitude != 0 OR longitude != 0) - ), - -- 4. Viagens realizadas - viagem AS ( - SELECT - data, - servico_realizado AS servico, - datetime_partida, - datetime_chegada, - id_veiculo, - id_viagem, - sentido, - distancia_planejada - FROM - -- {{ ref("viagem_completa") }} - rj-smtr.projeto_subsidio_sppo.viagem_completa - WHERE - data >= DATE("2024-10-01") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE( "{{ var("end_date") }}" ) - {% endif %} - ), - -- 5. Status dos veículos - veiculos AS ( - SELECT - data, - id_veiculo, - status - FROM - -- {{ ref("sppo_veiculo_dia") }} - rj-smtr.veiculo.sppo_veiculo_dia - WHERE - data >= DATE("2024-10-01") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE( "{{ var("end_date") }}" ) - {% endif %} - ), - -- 6. Viagem, para fins de contagem de passageiros, com tolerância de 30 minutos apenas para a primeira viagem - -- Obtem o Datetime de chegada da viagem anterior - chegada_anterior AS ( - SELECT - v.*, - LAG(v.datetime_chegada) OVER (PARTITION BY v.id_veiculo ORDER BY v.datetime_partida) AS viagem_anterior_chegada, - FROM - viagem AS v - ), - -- Adiciona tolerancia de 30 minutos a primeira viagem ou até o fim da viagem anterior caso exista - viagem_com_tolerancia AS ( - SELECT - v.*, - CASE - WHEN viagem_anterior_chegada IS NULL THEN - DATETIME(TIMESTAMP_SUB(datetime_partida, INTERVAL 30 MINUTE)) - ELSE DATETIME(TIMESTAMP_ADD(viagem_anterior_chegada, INTERVAL 1 SECOND)) - END AS datetime_partida_com_tolerancia - FROM - chegada_anterior AS v - ), - -- 7. Contagem de transações Jaé - transacao_contagem AS ( - SELECT - v.data, - v.id_viagem, - COUNT(t.datetime_transacao) AS quantidade_transacao - FROM - transacao AS t - JOIN - viagem_com_tolerancia AS v - ON - t.id_veiculo = SUBSTR(v.id_veiculo, 2) - AND t.datetime_transacao BETWEEN v.datetime_partida_com_tolerancia AND v.datetime_chegada - GROUP BY - v.data, v.id_viagem - ), - -- 5. Contagem de transações RioCard - transacao_riocard_contagem AS ( - SELECT - v.data, - v.id_viagem, - COUNT(tr.datetime_transacao) AS quantidade_transacao_riocard - FROM - transacao_riocard AS tr - JOIN - viagem_com_tolerancia AS v - ON - tr.id_veiculo = SUBSTR(v.id_veiculo, 2) - AND tr.datetime_transacao BETWEEN v.datetime_partida_com_tolerancia AND v.datetime_chegada - GROUP BY - v.data, v.id_viagem - ), - -- 6. Ajusta estado do equipamento - -- Agrupa mesma posição para mesmo validador e veículo, mantendo preferencialmente o estado do equipamento "ABERTO" - estado_equipamento_aux AS ( - SELECT - data, - id_validador, - id_veiculo, - latitude, - longitude, - IF(COUNT(CASE WHEN estado_equipamento = "ABERTO" THEN 1 END) >= 1, "ABERTO", "FECHADO") AS estado_equipamento, - MIN(datetime_gps) AS datetime_gps, - FROM - gps_validador - GROUP BY - 1, - 2, - 3, - 4, - 5 - ), - -- 7. Relacionamento entre estado do equipamento e viagem - gps_validador_viagem AS ( - SELECT - v.data, - e.datetime_gps, - v.id_viagem, - e.id_validador, - e.estado_equipamento, - e.latitude, - e.longitude - FROM - estado_equipamento_aux AS e - JOIN - viagem AS v - ON - e.id_veiculo = SUBSTR(v.id_veiculo, 2) - AND e.datetime_gps BETWEEN v.datetime_partida AND v.datetime_chegada - ), - -- 8. Calcula a porcentagem de estado do equipamento "ABERTO" por validador e viagem - estado_equipamento_perc AS ( - SELECT - data, - id_viagem, - id_validador, - COUNTIF(estado_equipamento = "ABERTO") / COUNT(*) AS percentual_estado_equipamento_aberto - FROM - gps_validador_viagem - GROUP BY - 1, - 2, - 3 - ), - -- 9. Considera o validador com maior porcentagem de estado do equipamento "ABERTO" por viagem - estado_equipamento_max_perc AS ( - SELECT - data, - id_viagem, - MAX_BY(id_validador, percentual_estado_equipamento_aberto) AS id_validador, - MAX(percentual_estado_equipamento_aberto) AS percentual_estado_equipamento_aberto - FROM - estado_equipamento_perc - GROUP BY - 1, - 2 - ), - -- 10. Verifica se a viagem possui estado do equipamento "ABERTO" em pelo menos 80% dos registros - estado_equipamento_verificacao AS ( - SELECT - data, - id_viagem, - id_validador, - percentual_estado_equipamento_aberto, - IF(percentual_estado_equipamento_aberto >= 0.8 OR percentual_estado_equipamento_aberto IS NULL, TRUE, FALSE) AS indicador_estado_equipamento_aberto - FROM - viagem - LEFT JOIN - estado_equipamento_max_perc - USING - (data, id_viagem) - ) -SELECT - v.data, - v.id_viagem, - v.id_veiculo, - v.servico, - eev.id_validador, - CASE - WHEN v.data >= DATE("2024-10-01") - AND (COALESCE(tr.quantidade_transacao_riocard, 0) = 0 - OR COALESCE(eev.indicador_estado_equipamento_aberto, FALSE) = FALSE) - AND ve.status IN ("Licenciado com ar e não autuado", "Licenciado sem ar e não autuado") - THEN "Sem transação" - ELSE ve.status - END AS tipo_viagem, - v.sentido, - v.distancia_planejada, - COALESCE(t.quantidade_transacao, 0) AS quantidade_transacao, - COALESCE(tr.quantidade_transacao_riocard, 0) AS quantidade_transacao_riocard, - eev.percentual_estado_equipamento_aberto, - eev.indicador_estado_equipamento_aberto, - v.datetime_partida_com_tolerancia AS datetime_partida_bilhetagem, - v.datetime_partida, - v.datetime_chegada, - CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao -FROM - viagem_com_tolerancia AS v -LEFT JOIN - veiculos AS ve -USING - (data, id_veiculo) -LEFT JOIN - transacao_contagem AS t -USING - (data, id_viagem) -LEFT JOIN - transacao_riocard_contagem AS tr -USING - (data, id_viagem) -LEFT JOIN - estado_equipamento_verificacao AS eev -USING - (data, id_viagem) - +with + -- 1. Transações Jaé + transacao as ( + select id_veiculo, datetime_transacao + from + -- {{ ref("transacao") }} + rj - smtr.br_rj_riodejaneiro_bilhetagem.transacao + where + data >= date("2024-10-01") + {% if is_incremental() %} + and data between date("{{ var(" start_date ") }}") and date_add( + date("{{ var(" end_date ") }}"), interval 1 day + ) + {% endif %} + ), + -- 2. Transações RioCard + transacao_riocard as ( + select id_veiculo, datetime_transacao + from + -- {{ ref("transacao_riocard") }} + rj - smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard + where + data >= date("2024-10-01") + {% if is_incremental() %} + and data between date("{{ var(" start_date ") }}") and date_add( + date("{{ var(" end_date ") }}"), interval 1 day + ) + {% endif %} + ), + -- 3. GPS Validador + gps_validador as ( + select + data, + datetime_gps, + id_veiculo, + id_validador, + estado_equipamento, + latitude, + longitude + from + -- {{ ref("gps_validador") }} + rj - smtr.br_rj_riodejaneiro_bilhetagem.gps_validador + where + data >= date("2024-10-01") + {% if is_incremental() %} + and data between date("{{ var(" start_date ") }}") and date_add( + date("{{ var(" end_date ") }}"), interval 1 day + ) + {% endif %} + and (latitude != 0 or longitude != 0) + ), + -- 4. Viagens realizadas + viagem as ( + select + data, + servico_realizado as servico, + datetime_partida, + datetime_chegada, + id_veiculo, + id_viagem, + sentido, + distancia_planejada + from + -- {{ ref("viagem_completa") }} + rj - smtr.projeto_subsidio_sppo.viagem_completa + where + data >= date("2024-10-01") + {% if is_incremental() %} + and data between date("{{ var(" start_date ") }}") and date( + "{{ var(" end_date ") }}" + ) + {% endif %} + ), + -- 5. Status dos veículos + veiculos as ( + select data, id_veiculo, status + from + -- {{ ref("sppo_veiculo_dia") }} + rj - smtr.veiculo.sppo_veiculo_dia + where + data >= date("2024-10-01") + {% if is_incremental() %} + and data between date("{{ var(" start_date ") }}") and date( + "{{ var(" end_date ") }}" + ) + {% endif %} + ), + -- 6. Viagem, para fins de contagem de passageiros, com tolerância de 30 minutos, + -- limitada pela viagem anterior + viagem_com_tolerancia as ( + select + v.*, + lag(v.datetime_chegada) over ( + partition by v.id_veiculo order by v.datetime_partida + ) as viagem_anterior_chegada, + case + when + lag(v.datetime_chegada) over ( + partition by v.id_veiculo order by v.datetime_partida + ) + is null + then datetime(timestamp_sub(datetime_partida, interval 2 hour)) + else + datetime( + timestamp_add( + greatest( + timestamp_sub(datetime_partida, interval 2 hour), + lag(v.datetime_chegada) over ( + partition by v.id_veiculo + order by v.datetime_partida + ) + ), + interval 1 second + ) + ) + end as datetime_partida_com_tolerancia + from viagem as v + ), + -- 7. Contagem de transações Jaé + transacao_contagem as ( + select v.data, v.id_viagem, count(t.datetime_transacao) as quantidade_transacao + from transacao as t + join + viagem_com_tolerancia as v + on t.id_veiculo = substr(v.id_veiculo, 2) + and t.datetime_transacao + between v.datetime_partida_com_tolerancia and v.datetime_chegada + group by v.data, v.id_viagem + ), + -- 5. Contagem de transações RioCard + transacao_riocard_contagem as ( + select + v.data, + v.id_viagem, + count(tr.datetime_transacao) as quantidade_transacao_riocard + from transacao_riocard as tr + join + viagem_com_tolerancia as v + on tr.id_veiculo = substr(v.id_veiculo, 2) + and tr.datetime_transacao + between v.datetime_partida_com_tolerancia and v.datetime_chegada + group by v.data, v.id_viagem + ), + -- 6. Ajusta estado do equipamento + -- Agrupa mesma posição para mesmo validador e veículo, mantendo preferencialmente + -- o estado do equipamento "ABERTO" + estado_equipamento_aux as ( + select + data, + id_validador, + id_veiculo, + latitude, + longitude, + if( + count(case when estado_equipamento = "ABERTO" then 1 end) >= 1, + "ABERTO", + "FECHADO" + ) as estado_equipamento, + min(datetime_gps) as datetime_gps, + from gps_validador + group by 1, 2, 3, 4, 5 + ), + -- 7. Relacionamento entre estado do equipamento e viagem + gps_validador_viagem as ( + select + v.data, + e.datetime_gps, + v.id_viagem, + e.id_validador, + e.estado_equipamento, + e.latitude, + e.longitude + from estado_equipamento_aux as e + join + viagem as v + on e.id_veiculo = substr(v.id_veiculo, 2) + and e.datetime_gps between v.datetime_partida and v.datetime_chegada + ), + -- 8. Calcula a porcentagem de estado do equipamento "ABERTO" por validador e viagem + estado_equipamento_perc as ( + select + data, + id_viagem, + id_validador, + countif(estado_equipamento = "ABERTO") + / count(*) as percentual_estado_equipamento_aberto + from gps_validador_viagem + group by 1, 2, 3 + ), + -- 9. Considera o validador com maior porcentagem de estado do equipamento + -- "ABERTO" por viagem + estado_equipamento_max_perc as ( + select + data, + id_viagem, + max_by(id_validador, percentual_estado_equipamento_aberto) as id_validador, + max( + percentual_estado_equipamento_aberto + ) as percentual_estado_equipamento_aberto + from estado_equipamento_perc + group by 1, 2 + ), + -- 10. Verifica se a viagem possui estado do equipamento "ABERTO" em pelo menos + -- 80% dos registros + estado_equipamento_verificacao as ( + select + data, + id_viagem, + id_validador, + percentual_estado_equipamento_aberto, + if( + percentual_estado_equipamento_aberto >= 0.8 + or percentual_estado_equipamento_aberto is null, + true, + false + ) as indicador_estado_equipamento_aberto + from viagem + left join estado_equipamento_max_perc using (data, id_viagem) + ) +select + v.data, + v.id_viagem, + v.id_veiculo, + v.servico, + case + when + v.data >= date("2024-10-01") + and ( + coalesce(tr.quantidade_transacao_riocard, 0) = 0 + or coalesce(eev.indicador_estado_equipamento_aberto, false) = false + ) + and ve.status + in ("Licenciado com ar e não autuado", "Licenciado sem ar e não autuado") + then "Sem transação" + else ve.status + end as tipo_viagem, + v.sentido, + v.distancia_planejada, + coalesce(t.quantidade_transacao, 0) as quantidade_transacao, + coalesce(tr.quantidade_transacao_riocard, 0) as quantidade_transacao_riocard, + v.datetime_partida_com_tolerancia as datetime_partida_bilhetagem, + v.datetime_partida, + v.datetime_chegada, + current_datetime("America/Sao_Paulo") as datetime_ultima_atualizacao +from viagem_com_tolerancia as v +left join veiculos as ve using (data, id_veiculo) +left join transacao_contagem as t using (data, id_viagem) +left join transacao_riocard_contagem as tr using (data, id_viagem) +left join estado_equipamento_verificacao as eev using (data, id_viagem) diff --git a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql deleted file mode 100644 index c5a40a1f..00000000 --- a/queries/models/monitoramento/sumario_servico_dia_tipo_viagem_historico.sql +++ /dev/null @@ -1,53 +0,0 @@ -{{ - config( - materialized="view", - ) -}} -WITH - pre_faixa_horaria AS ( - SELECT - data, - tipo_dia, - consorcio, - servico, - tipo_viagem, - indicador_ar_condicionado, - viagens, - km_apurada - FROM - {{ ref('sumario_servico_tipo_viagem_dia')}} - -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` - WHERE - data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - ), - pos_faixa_horaria AS ( - SELECT - data, - tipo_dia, - consorcio, - servico, - tipo_viagem, - indicador_ar_condicionado, - sum(viagens_faixa) AS viagens, - sum(km_apurada_faixa) AS km_apurada - FROM - {{ ref('subsidio_faixa_servico_dia_tipo_viagem')}} - -- `rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` - WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - and tipo_viagem != "Sem viagem apurada" - GROUP by data, - tipo_dia, - consorcio, - servico, - tipo_viagem, - indicador_ar_condicionado) -SELECT - * -FROM - pre_faixa_horaria -UNION ALL -SELECT - * -FROM - pos_faixa_horaria \ No newline at end of file From f2b8f4d798fd89846dc5c82a59dc212f3305fe0f Mon Sep 17 00:00:00 2001 From: vtr363 Date: Fri, 27 Dec 2024 17:54:48 -0300 Subject: [PATCH 15/23] =?UTF-8?q?altera=20materializa=C3=A7=C3=A3o=20das?= =?UTF-8?q?=20tabelas=20historicas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sumario_servico_dia_historico.sql | 100 ------- ...ario_servico_dia_tipo_viagem_historico.sql | 53 ---- .../monitoramento_servico_dia.sql | 22 ++ .../monitoramento_servico_dia_tipo_viagem.sql | 20 ++ ...nitoramento_servico_dia_tipo_viagem_v2.sql | 22 ++ .../monitoramento_servico_dia_v2.sql | 68 +++++ ...oramento_sumario_servico_dia_historico.sql | 17 ++ ...ario_servico_dia_tipo_viagem_historico.sql | 19 ++ .../monitoramento_viagem_transacao.sql | 258 ------------------ queries/selectors.yml | 8 + 10 files changed, 176 insertions(+), 411 deletions(-) delete mode 100644 queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql delete mode 100644 queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql create mode 100644 queries/models/monitoramento/monitoramento_servico_dia.sql create mode 100644 queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql create mode 100644 queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql create mode 100644 queries/models/monitoramento/monitoramento_servico_dia_v2.sql create mode 100644 queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql create mode 100644 queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql delete mode 100644 queries/models/monitoramento/monitoramento_viagem_transacao.sql diff --git a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql deleted file mode 100644 index 500c3a33..00000000 --- a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_historico.sql +++ /dev/null @@ -1,100 +0,0 @@ -{{ - config( - materialized="incremental", - partition_by={"field": "data", "data_type": "date", "granularity": "day"}, - incremental_strategy="insert_overwrite", - ) -}} -WITH - pre_faixa_horaria AS ( - SELECT - data, - tipo_dia, - consorcio, - servico, - vista, - viagens, - km_apurada, - km_planejada, - perc_km_planejada, - valor_subsidio_pago, - valor_penalidade - FROM - {{ ref('sumario_servico_dia_historico')}} - -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` - WHERE - data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} ), - planejada AS ( - SELECT - DISTINCT data, - consorcio, - servico, - vista - FROM - {{ ref('viagem_planejada')}} - -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` - WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - AND (id_tipo_trajeto = 0 - OR id_tipo_trajeto IS NULL) - AND FORMAT_TIME("%T", TIME(faixa_horaria_inicio)) != "00:00:00" ), - pagamento AS ( - SELECT - data, - tipo_dia, - consorcio, - servico, - vista, - viagens_dia AS viagens, - CASE - WHEN data >= DATE("{{ var("DATA_SUBSIDIO_V10_INICIO") }}") THEN COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) - ELSE COALESCE(km_apurada_registrado_com_ar_inoperante,0) + COALESCE(km_apurada_autuado_ar_inoperante,0) + COALESCE(km_apurada_autuado_seguranca,0) + COALESCE(km_apurada_autuado_limpezaequipamento,0) + COALESCE(km_apurada_licenciado_sem_ar_n_autuado,0) + COALESCE(km_apurada_licenciado_com_ar_n_autuado,0) + COALESCE(km_apurada_sem_transacao, 0) + COALESCE(km_apurada_n_vistoriado, 0) + COALESCE(km_apurada_n_licenciado, 0) - END - AS km_apurada, - km_planejada_dia AS km_planejada, - valor_a_pagar AS valor_subsidio_pago, - valor_penalidade - FROM - {{ ref('subsidio_sumario_servico_dia_pagamento')}} AS sdp - -- `rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` - LEFT JOIN - planejada AS P - USING - (data, - servico, - consorcio) - WHERE - data >= DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} - ), - pos_faixa_horaria AS ( - SELECT - data, - tipo_dia, - consorcio, - servico, - vista, - viagens, - km_apurada, - km_planejada, - 100*km_apurada/km_planejada AS perc_km_planejada, - valor_subsidio_pago, - valor_penalidade - FROM - pagamento ) -SELECT - * -FROM - pre_faixa_horaria -UNION ALL -SELECT - * -FROM - pos_faixa_horaria \ No newline at end of file diff --git a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql deleted file mode 100644 index 0440bfe4..00000000 --- a/queries/models/dashboard_subsidio_sppo_v2/sumario_servico_dia_tipo_viagem_historico.sql +++ /dev/null @@ -1,53 +0,0 @@ -{{ - config( - materialized="incremental", - partition_by={"field": "data", "data_type": "date", "granularity": "day"}, - incremental_strategy="insert_overwrite", - ) -}} -with - pre_faixa_horaria as ( - select - data, - tipo_dia, - consorcio, - servico, - tipo_viagem, - indicador_ar_condicionado, - viagens, - km_apurada - from {{ ref("sumario_servico_tipo_viagem_dia") }} - -- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` - where data < date("{{ var(" data_subsidio_v9_inicio ") }}") - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} - ), - pos_faixa_horaria as ( - select - data, - tipo_dia, - consorcio, - servico, - tipo_viagem, - indicador_ar_condicionado, - sum(viagens_faixa) as viagens, - sum(km_apurada_faixa) as km_apurada - from {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} - -- `rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` - where - data >= date("{{ var(" data_subsidio_v9_inicio ") }}") - and tipo_viagem != "Sem viagem apurada" - {% if is_incremental() %} - AND data BETWEEN DATE("{{ var("start_date") }}") - AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {% endif %} - group by - data, tipo_dia, consorcio, servico, tipo_viagem, indicador_ar_condicionado - ) -select * -from pre_faixa_horaria -union all -select * -from pos_faixa_horaria diff --git a/queries/models/monitoramento/monitoramento_servico_dia.sql b/queries/models/monitoramento/monitoramento_servico_dia.sql new file mode 100644 index 00000000..f59629d9 --- /dev/null +++ b/queries/models/monitoramento/monitoramento_servico_dia.sql @@ -0,0 +1,22 @@ +{{ config(materialized="ephemeral") }} + +select + data, + tipo_dia, + consorcio, + servico, + vista, + viagens, + km_apurada, + km_planejada, + perc_km_planejada, + valor_subsidio_pago, + valor_penalidade +from -- {{ ref("sumario_servico_dia_historico") }} +`rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` +where + data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") --noqa + {# {% if is_incremental() %} #} + AND data BETWEEN DATE("{{ var("start_date") }}") + AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) + {# {% endif %} #} diff --git a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql new file mode 100644 index 00000000..e6dae262 --- /dev/null +++ b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql @@ -0,0 +1,20 @@ +{{ config(materialized="ephemeral") }} + +select + data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado, + viagens, + km_apurada +from -- {{ ref("sumario_servico_tipo_viagem_dia") }} +`rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` +where + data < date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + {# {% if is_incremental() %} #} + and data between date("{{ var("start_date") }}") and date_add( + date("{{ var("end_date") }}"), interval 1 day + ) + {# {% endif %} #} diff --git a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql new file mode 100644 index 00000000..af105612 --- /dev/null +++ b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql @@ -0,0 +1,22 @@ +{{ config(materialized="ephemeral") }} + +select + data, + tipo_dia, + consorcio, + servico, + tipo_viagem, + indicador_ar_condicionado, + sum(viagens_faixa) as viagens, + sum(km_apurada_faixa) as km_apurada +from -- {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} +`rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` +where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + and tipo_viagem != "Sem viagem apurada" + {# {% if is_incremental() %} #} + and data between date("{{ var("start_date") }}") and date_add( + date("{{ var("end_date") }}"), interval 1 day + ) + {# {% endif %} #} +group by data, tipo_dia, consorcio, servico, tipo_viagem, indicador_ar_condicionado diff --git a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql new file mode 100644 index 00000000..1240e75a --- /dev/null +++ b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql @@ -0,0 +1,68 @@ +{{ config(materialized="ephemeral") }} + +with + planejada as ( + select distinct data, consorcio, servico, vista + from -- {{ ref("viagem_planejada") }} + `rj-smtr.projeto_subsidio_sppo.viagem_planejada` + where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + and (id_tipo_trajeto = 0 or id_tipo_trajeto is null) + and format_time("%T", time(faixa_horaria_inicio)) != "00:00:00" + ), + pagamento as ( + select + data, + tipo_dia, + consorcio, + servico, + vista, + viagens_dia as viagens, + case + when data >= date("{{ var("DATA_SUBSIDIO_V10_INICIO") }}") + then + coalesce(km_apurada_registrado_com_ar_inoperante, 0) + + coalesce(km_apurada_autuado_ar_inoperante, 0) + + coalesce(km_apurada_autuado_seguranca, 0) + + coalesce(km_apurada_autuado_limpezaequipamento, 0) + + coalesce(km_apurada_licenciado_sem_ar_n_autuado, 0) + + coalesce(km_apurada_licenciado_com_ar_n_autuado, 0) + + coalesce(km_apurada_sem_transacao, 0) + else + coalesce(km_apurada_registrado_com_ar_inoperante, 0) + + coalesce(km_apurada_autuado_ar_inoperante, 0) + + coalesce(km_apurada_autuado_seguranca, 0) + + coalesce(km_apurada_autuado_limpezaequipamento, 0) + + coalesce(km_apurada_licenciado_sem_ar_n_autuado, 0) + + coalesce(km_apurada_licenciado_com_ar_n_autuado, 0) + + coalesce(km_apurada_sem_transacao, 0) + + coalesce(km_apurada_n_vistoriado, 0) + + coalesce(km_apurada_n_licenciado, 0) + end as km_apurada, + km_planejada_dia as km_planejada, + valor_a_pagar as valor_subsidio_pago, + valor_penalidade + from -- {{ ref("subsidio_sumario_servico_dia_pagamento") }} as sdp + `rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` + left join planejada as p using (data, servico, consorcio) + where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + {# {% if is_incremental() %} #} + and data between date("{{ var("start_date") }}") and date_add( + date("{{ var("end_date") }}"), interval 1 day + ) + {# {% endif %} #} + ) +select + data, + tipo_dia, + consorcio, + servico, + vista, + viagens, + km_apurada, + km_planejada, + 100 * km_apurada / km_planejada as perc_km_planejada, + valor_subsidio_pago, + valor_penalidade +from pagamento diff --git a/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql b/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql new file mode 100644 index 00000000..a741c05e --- /dev/null +++ b/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + incremental_strategy="insert_overwrite", + alias="sumario_servico_dia_historico", + ) +}} +select * +from {{ ref("monitoramento_servico_dia") }} +where + data < date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") +union all +select * +from {{ ref("monitoramento_servico_dia_v2") }} +where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") diff --git a/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql new file mode 100644 index 00000000..fb08cb80 --- /dev/null +++ b/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql @@ -0,0 +1,19 @@ +{{ + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + incremental_strategy="insert_overwrite", + alias="sumario_servico_dia_tipo_viagem_historico", + ) +}} + +select * +from {{ ref("monitoramento_servico_dia_tipo_viagem") }} +where + data < date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") +union all +select * +from {{ ref("monitoramento_servico_dia_tipo_viagem_v2") }} +where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + and tipo_viagem != "Sem viagem apurada" diff --git a/queries/models/monitoramento/monitoramento_viagem_transacao.sql b/queries/models/monitoramento/monitoramento_viagem_transacao.sql deleted file mode 100644 index b506e9c4..00000000 --- a/queries/models/monitoramento/monitoramento_viagem_transacao.sql +++ /dev/null @@ -1,258 +0,0 @@ -{{ - config( - materialized="incremental", - partition_by={"field": "data", "data_type": "date", "granularity": "day"}, - incremental_strategy="insert_overwrite", - alias="viagem_transacao", - ) -}} - -with - -- 1. Transações Jaé - transacao as ( - select id_veiculo, datetime_transacao - from - -- {{ ref("transacao") }} - rj - smtr.br_rj_riodejaneiro_bilhetagem.transacao - where - data >= date("2024-10-01") - {% if is_incremental() %} - and data between date("{{ var(" start_date ") }}") and date_add( - date("{{ var(" end_date ") }}"), interval 1 day - ) - {% endif %} - ), - -- 2. Transações RioCard - transacao_riocard as ( - select id_veiculo, datetime_transacao - from - -- {{ ref("transacao_riocard") }} - rj - smtr.br_rj_riodejaneiro_bilhetagem.transacao_riocard - where - data >= date("2024-10-01") - {% if is_incremental() %} - and data between date("{{ var(" start_date ") }}") and date_add( - date("{{ var(" end_date ") }}"), interval 1 day - ) - {% endif %} - ), - -- 3. GPS Validador - gps_validador as ( - select - data, - datetime_gps, - id_veiculo, - id_validador, - estado_equipamento, - latitude, - longitude - from - -- {{ ref("gps_validador") }} - rj - smtr.br_rj_riodejaneiro_bilhetagem.gps_validador - where - data >= date("2024-10-01") - {% if is_incremental() %} - and data between date("{{ var(" start_date ") }}") and date_add( - date("{{ var(" end_date ") }}"), interval 1 day - ) - {% endif %} - and (latitude != 0 or longitude != 0) - ), - -- 4. Viagens realizadas - viagem as ( - select - data, - servico_realizado as servico, - datetime_partida, - datetime_chegada, - id_veiculo, - id_viagem, - sentido, - distancia_planejada - from - -- {{ ref("viagem_completa") }} - rj - smtr.projeto_subsidio_sppo.viagem_completa - where - data >= date("2024-10-01") - {% if is_incremental() %} - and data between date("{{ var(" start_date ") }}") and date( - "{{ var(" end_date ") }}" - ) - {% endif %} - ), - -- 5. Status dos veículos - veiculos as ( - select data, id_veiculo, status - from - -- {{ ref("sppo_veiculo_dia") }} - rj - smtr.veiculo.sppo_veiculo_dia - where - data >= date("2024-10-01") - {% if is_incremental() %} - and data between date("{{ var(" start_date ") }}") and date( - "{{ var(" end_date ") }}" - ) - {% endif %} - ), - -- 6. Viagem, para fins de contagem de passageiros, com tolerância de 30 minutos, - -- limitada pela viagem anterior - viagem_com_tolerancia as ( - select - v.*, - lag(v.datetime_chegada) over ( - partition by v.id_veiculo order by v.datetime_partida - ) as viagem_anterior_chegada, - case - when - lag(v.datetime_chegada) over ( - partition by v.id_veiculo order by v.datetime_partida - ) - is null - then datetime(timestamp_sub(datetime_partida, interval 2 hour)) - else - datetime( - timestamp_add( - greatest( - timestamp_sub(datetime_partida, interval 2 hour), - lag(v.datetime_chegada) over ( - partition by v.id_veiculo - order by v.datetime_partida - ) - ), - interval 1 second - ) - ) - end as datetime_partida_com_tolerancia - from viagem as v - ), - -- 7. Contagem de transações Jaé - transacao_contagem as ( - select v.data, v.id_viagem, count(t.datetime_transacao) as quantidade_transacao - from transacao as t - join - viagem_com_tolerancia as v - on t.id_veiculo = substr(v.id_veiculo, 2) - and t.datetime_transacao - between v.datetime_partida_com_tolerancia and v.datetime_chegada - group by v.data, v.id_viagem - ), - -- 5. Contagem de transações RioCard - transacao_riocard_contagem as ( - select - v.data, - v.id_viagem, - count(tr.datetime_transacao) as quantidade_transacao_riocard - from transacao_riocard as tr - join - viagem_com_tolerancia as v - on tr.id_veiculo = substr(v.id_veiculo, 2) - and tr.datetime_transacao - between v.datetime_partida_com_tolerancia and v.datetime_chegada - group by v.data, v.id_viagem - ), - -- 6. Ajusta estado do equipamento - -- Agrupa mesma posição para mesmo validador e veículo, mantendo preferencialmente - -- o estado do equipamento "ABERTO" - estado_equipamento_aux as ( - select - data, - id_validador, - id_veiculo, - latitude, - longitude, - if( - count(case when estado_equipamento = "ABERTO" then 1 end) >= 1, - "ABERTO", - "FECHADO" - ) as estado_equipamento, - min(datetime_gps) as datetime_gps, - from gps_validador - group by 1, 2, 3, 4, 5 - ), - -- 7. Relacionamento entre estado do equipamento e viagem - gps_validador_viagem as ( - select - v.data, - e.datetime_gps, - v.id_viagem, - e.id_validador, - e.estado_equipamento, - e.latitude, - e.longitude - from estado_equipamento_aux as e - join - viagem as v - on e.id_veiculo = substr(v.id_veiculo, 2) - and e.datetime_gps between v.datetime_partida and v.datetime_chegada - ), - -- 8. Calcula a porcentagem de estado do equipamento "ABERTO" por validador e viagem - estado_equipamento_perc as ( - select - data, - id_viagem, - id_validador, - countif(estado_equipamento = "ABERTO") - / count(*) as percentual_estado_equipamento_aberto - from gps_validador_viagem - group by 1, 2, 3 - ), - -- 9. Considera o validador com maior porcentagem de estado do equipamento - -- "ABERTO" por viagem - estado_equipamento_max_perc as ( - select - data, - id_viagem, - max_by(id_validador, percentual_estado_equipamento_aberto) as id_validador, - max( - percentual_estado_equipamento_aberto - ) as percentual_estado_equipamento_aberto - from estado_equipamento_perc - group by 1, 2 - ), - -- 10. Verifica se a viagem possui estado do equipamento "ABERTO" em pelo menos - -- 80% dos registros - estado_equipamento_verificacao as ( - select - data, - id_viagem, - id_validador, - percentual_estado_equipamento_aberto, - if( - percentual_estado_equipamento_aberto >= 0.8 - or percentual_estado_equipamento_aberto is null, - true, - false - ) as indicador_estado_equipamento_aberto - from viagem - left join estado_equipamento_max_perc using (data, id_viagem) - ) -select - v.data, - v.id_viagem, - v.id_veiculo, - v.servico, - case - when - v.data >= date("2024-10-01") - and ( - coalesce(tr.quantidade_transacao_riocard, 0) = 0 - or coalesce(eev.indicador_estado_equipamento_aberto, false) = false - ) - and ve.status - in ("Licenciado com ar e não autuado", "Licenciado sem ar e não autuado") - then "Sem transação" - else ve.status - end as tipo_viagem, - v.sentido, - v.distancia_planejada, - coalesce(t.quantidade_transacao, 0) as quantidade_transacao, - coalesce(tr.quantidade_transacao_riocard, 0) as quantidade_transacao_riocard, - v.datetime_partida_com_tolerancia as datetime_partida_bilhetagem, - v.datetime_partida, - v.datetime_chegada, - current_datetime("America/Sao_Paulo") as datetime_ultima_atualizacao -from viagem_com_tolerancia as v -left join veiculos as ve using (data, id_veiculo) -left join transacao_contagem as t using (data, id_viagem) -left join transacao_riocard_contagem as tr using (data, id_viagem) -left join estado_equipamento_verificacao as eev using (data, id_viagem) diff --git a/queries/selectors.yml b/queries/selectors.yml index 6d28a8cb..9e738cb9 100644 --- a/queries/selectors.yml +++ b/queries/selectors.yml @@ -9,6 +9,10 @@ selectors: value: viagem_transacao - method: path value: models/dashboard_subsidio_sppo + - method: fqn + value: monitoramento_sumario_servico_dia_historico + - method: fqn + value: monitoramento_sumario_servico_dia_tipo_viagem_historico - name: apuracao_subsidio_v9 description: Apuração com faixa horária @@ -24,6 +28,10 @@ selectors: value: models/financeiro - method: path value: models/dashboard_subsidio_sppo_v2 + - method: fqn + value: monitoramento_sumario_servico_dia_historico + - method: fqn + value: monitoramento_sumario_servico_dia_tipo_viagem_historico - name: viagem_informada description: Materialização da tabela de viagens informadas From 5a70d2e6118194b6fb78972663153a1b700bb279 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Fri, 27 Dec 2024 17:57:20 -0300 Subject: [PATCH 16/23] corrige referencias --- .../monitoramento/monitoramento_servico_dia.sql | 8 ++++---- .../monitoramento_servico_dia_tipo_viagem.sql | 8 ++++---- .../monitoramento_servico_dia_tipo_viagem_v2.sql | 8 ++++---- .../monitoramento/monitoramento_servico_dia_v2.sql | 12 ++++++------ 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/queries/models/monitoramento/monitoramento_servico_dia.sql b/queries/models/monitoramento/monitoramento_servico_dia.sql index f59629d9..ec34f1df 100644 --- a/queries/models/monitoramento/monitoramento_servico_dia.sql +++ b/queries/models/monitoramento/monitoramento_servico_dia.sql @@ -12,11 +12,11 @@ select perc_km_planejada, valor_subsidio_pago, valor_penalidade -from -- {{ ref("sumario_servico_dia_historico") }} -`rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` +from {{ ref("sumario_servico_dia_historico") }} +-- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_dia_historico` where data < DATE("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") --noqa - {# {% if is_incremental() %} #} + {% if is_incremental() %} AND data BETWEEN DATE("{{ var("start_date") }}") AND DATE_ADD(DATE("{{ var("end_date") }}"), INTERVAL 1 DAY) - {# {% endif %} #} + {% endif %} diff --git a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql index e6dae262..7ccd9ea8 100644 --- a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql +++ b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql @@ -9,12 +9,12 @@ select indicador_ar_condicionado, viagens, km_apurada -from -- {{ ref("sumario_servico_tipo_viagem_dia") }} -`rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` +from {{ ref("sumario_servico_tipo_viagem_dia") }} +-- `rj-smtr.dashboard_subsidio_sppo.sumario_servico_tipo_viagem_dia` where data < date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - {# {% if is_incremental() %} #} + {% if is_incremental() %} and data between date("{{ var("start_date") }}") and date_add( date("{{ var("end_date") }}"), interval 1 day ) - {# {% endif %} #} + {% endif %} diff --git a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql index af105612..805ef607 100644 --- a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql +++ b/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql @@ -9,14 +9,14 @@ select indicador_ar_condicionado, sum(viagens_faixa) as viagens, sum(km_apurada_faixa) as km_apurada -from -- {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} -`rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` +from {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} +-- `rj-smtr.financeiro.subsidio_faixa_servico_dia_tipo_viagem` where data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") and tipo_viagem != "Sem viagem apurada" - {# {% if is_incremental() %} #} + {% if is_incremental() %} and data between date("{{ var("start_date") }}") and date_add( date("{{ var("end_date") }}"), interval 1 day ) - {# {% endif %} #} + {% endif %} group by data, tipo_dia, consorcio, servico, tipo_viagem, indicador_ar_condicionado diff --git a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql index 1240e75a..74601647 100644 --- a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql +++ b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql @@ -3,8 +3,8 @@ with planejada as ( select distinct data, consorcio, servico, vista - from -- {{ ref("viagem_planejada") }} - `rj-smtr.projeto_subsidio_sppo.viagem_planejada` + from {{ ref("viagem_planejada") }} + -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` where data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") and (id_tipo_trajeto = 0 or id_tipo_trajeto is null) @@ -42,16 +42,16 @@ with km_planejada_dia as km_planejada, valor_a_pagar as valor_subsidio_pago, valor_penalidade - from -- {{ ref("subsidio_sumario_servico_dia_pagamento") }} as sdp - `rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` + from {{ ref("subsidio_sumario_servico_dia_pagamento") }} as sdp + --`rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` left join planejada as p using (data, servico, consorcio) where data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - {# {% if is_incremental() %} #} + {% if is_incremental() %} and data between date("{{ var("start_date") }}") and date_add( date("{{ var("end_date") }}"), interval 1 day ) - {# {% endif %} #} + {% endif %} ) select data, From f9f89201a1cf926489060d5931ad13e7821d25da Mon Sep 17 00:00:00 2001 From: vtr363 Date: Mon, 6 Jan 2025 09:46:45 -0300 Subject: [PATCH 17/23] atualiza changelog e adiciona labels --- queries/models/monitoramento/CHANGELOG.md | 2 +- .../monitoramento_sumario_servico_dia_historico.sql | 1 + .../monitoramento_sumario_servico_dia_tipo_viagem_historico.sql | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/queries/models/monitoramento/CHANGELOG.md b/queries/models/monitoramento/CHANGELOG.md index 6ec13865..50bb88f7 100644 --- a/queries/models/monitoramento/CHANGELOG.md +++ b/queries/models/monitoramento/CHANGELOG.md @@ -4,7 +4,7 @@ ### Adicionado -- Cria modelos `sumario_servico_dia_pagamento_historico`, `sumario_servico_dia_tipo_viagem_historico` e `monitoramento_viagem_transacao` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) +- Cria modelos `sumario_servico_dia_pagamento_historico` e `sumario_servico_dia_tipo_viagem_historico` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) ## [1.0.0] - 2024-10-21 diff --git a/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql b/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql index a741c05e..45400e0d 100644 --- a/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql +++ b/queries/models/monitoramento/monitoramento_sumario_servico_dia_historico.sql @@ -4,6 +4,7 @@ partition_by={"field": "data", "data_type": "date", "granularity": "day"}, incremental_strategy="insert_overwrite", alias="sumario_servico_dia_historico", + labels={'dashboard':'yes'} ) }} select * diff --git a/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql b/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql index fb08cb80..f53b49b7 100644 --- a/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql +++ b/queries/models/monitoramento/monitoramento_sumario_servico_dia_tipo_viagem_historico.sql @@ -4,6 +4,7 @@ partition_by={"field": "data", "data_type": "date", "granularity": "day"}, incremental_strategy="insert_overwrite", alias="sumario_servico_dia_tipo_viagem_historico", + labels={'dashboard':'yes'} ) }} From dd0c0dfe45c53dd55b4ba85bfd8a943776e8b584 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Mon, 6 Jan 2025 11:05:05 -0300 Subject: [PATCH 18/23] adiciona label em viagem_completa e atualiza changelog --- queries/models/monitoramento/CHANGELOG.md | 4 +++- queries/models/projeto_subsidio_sppo/CHANGELOG.md | 6 ++++++ queries/models/projeto_subsidio_sppo/viagem_completa.sql | 3 ++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/queries/models/monitoramento/CHANGELOG.md b/queries/models/monitoramento/CHANGELOG.md index 50bb88f7..aa31c8fa 100644 --- a/queries/models/monitoramento/CHANGELOG.md +++ b/queries/models/monitoramento/CHANGELOG.md @@ -4,7 +4,9 @@ ### Adicionado -- Cria modelos `sumario_servico_dia_pagamento_historico` e `sumario_servico_dia_tipo_viagem_historico` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) +- Cria modelos `sumario_servico_dia_pagamento_historico.sql` e `sumario_servico_dia_tipo_viagem_historico.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) + +- Adicionado o label `dashboard` aos modelos `sumario_servico_dia_pagamento_historico.sql` e `sumario_servico_dia_tipo_viagem_historico.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) ## [1.0.0] - 2024-10-21 diff --git a/queries/models/projeto_subsidio_sppo/CHANGELOG.md b/queries/models/projeto_subsidio_sppo/CHANGELOG.md index 984d82d9..ae5d2ad1 100644 --- a/queries/models/projeto_subsidio_sppo/CHANGELOG.md +++ b/queries/models/projeto_subsidio_sppo/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog - projeto_subsidio_sppo +## [9.0.7] - 2024-10-22 + +### Adicionado + +- Adicionado label `dashboard` ao modelo `viagem_completa.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/258) + ## [9.0.6] - 2024-10-22 ### Corrigido diff --git a/queries/models/projeto_subsidio_sppo/viagem_completa.sql b/queries/models/projeto_subsidio_sppo/viagem_completa.sql index 2f0c77ff..fa20e40c 100644 --- a/queries/models/projeto_subsidio_sppo/viagem_completa.sql +++ b/queries/models/projeto_subsidio_sppo/viagem_completa.sql @@ -7,7 +7,8 @@ config( "granularity":"day" }, unique_key=['id_viagem'], - incremental_strategy='insert_overwrite' + incremental_strategy='insert_overwrite', + labels = {'dashboard': 'yes'} ) }} -- 1. Identifica viagens que estão dentro do quadro planejado (por From 9c861d0a19ca64f08b79a98a7b7431a726e0cc07 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Wed, 8 Jan 2025 11:20:44 -0300 Subject: [PATCH 19/23] =?UTF-8?q?adiciona=20materializa=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20tabelas=20historicas=20ao=20selector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitoramento/monitoramento_servico_dia_v2.sql | 2 +- queries/selectors.yml | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql index 74601647..0f776879 100644 --- a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql +++ b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql @@ -19,7 +19,7 @@ with vista, viagens_dia as viagens, case - when data >= date("{{ var("DATA_SUBSIDIO_V10_INICIO") }}") + when data >= date("{{ var("DATA_SUBSIDIO_V9A_INICIO") }}") then coalesce(km_apurada_registrado_com_ar_inoperante, 0) + coalesce(km_apurada_autuado_ar_inoperante, 0) diff --git a/queries/selectors.yml b/queries/selectors.yml index a76f8ba8..37ec7532 100644 --- a/queries/selectors.yml +++ b/queries/selectors.yml @@ -28,7 +28,6 @@ selectors: value: models/financeiro - method: path value: models/dashboard_subsidio_sppo_v2 - - method: fqn - name: viagem_informada description: Materialização da tabela de viagens informadas @@ -95,5 +94,10 @@ selectors: - name: monitoramento_subsidio description: Materialização das tabelas utilizadas nos dashboards do subsidio definition: - method: fqn - value: monitoramento_viagem_transacao \ No newline at end of file + union: + - method: fqn + value: monitoramento_viagem_transacao + - method: fqn + value: monitoramento_sumario_servico_dia_historico + - method: fqn + value: monitoramento_sumario_servico_dia_tipo_viagem_historico \ No newline at end of file From 2de0a71fb6b7dc539229e8ec407052dfc5d01faf Mon Sep 17 00:00:00 2001 From: vtr363 Date: Fri, 10 Jan 2025 17:17:32 -0300 Subject: [PATCH 20/23] =?UTF-8?q?move=20modelos=20ephemeral=20para=20stagi?= =?UTF-8?q?ng=20e=20altera=20modelo=20mnitoramento=5Fservico=5Fdia=5Fv2=20?= =?UTF-8?q?para=20obter=20dados=20da=20tabela=20n=C3=A3o=20pivotada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitoramento_servico_dia_v2.sql | 68 --------------- .../monitoramento_servico_dia.sql | 0 .../monitoramento_servico_dia_tipo_viagem.sql | 0 ...nitoramento_servico_dia_tipo_viagem_v2.sql | 0 .../staging/monitoramento_servico_dia_v2.sql | 84 +++++++++++++++++++ 5 files changed, 84 insertions(+), 68 deletions(-) delete mode 100644 queries/models/monitoramento/monitoramento_servico_dia_v2.sql rename queries/models/monitoramento/{ => staging}/monitoramento_servico_dia.sql (100%) rename queries/models/monitoramento/{ => staging}/monitoramento_servico_dia_tipo_viagem.sql (100%) rename queries/models/monitoramento/{ => staging}/monitoramento_servico_dia_tipo_viagem_v2.sql (100%) create mode 100644 queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql diff --git a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/monitoramento_servico_dia_v2.sql deleted file mode 100644 index 0f776879..00000000 --- a/queries/models/monitoramento/monitoramento_servico_dia_v2.sql +++ /dev/null @@ -1,68 +0,0 @@ -{{ config(materialized="ephemeral") }} - -with - planejada as ( - select distinct data, consorcio, servico, vista - from {{ ref("viagem_planejada") }} - -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` - where - data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - and (id_tipo_trajeto = 0 or id_tipo_trajeto is null) - and format_time("%T", time(faixa_horaria_inicio)) != "00:00:00" - ), - pagamento as ( - select - data, - tipo_dia, - consorcio, - servico, - vista, - viagens_dia as viagens, - case - when data >= date("{{ var("DATA_SUBSIDIO_V9A_INICIO") }}") - then - coalesce(km_apurada_registrado_com_ar_inoperante, 0) - + coalesce(km_apurada_autuado_ar_inoperante, 0) - + coalesce(km_apurada_autuado_seguranca, 0) - + coalesce(km_apurada_autuado_limpezaequipamento, 0) - + coalesce(km_apurada_licenciado_sem_ar_n_autuado, 0) - + coalesce(km_apurada_licenciado_com_ar_n_autuado, 0) - + coalesce(km_apurada_sem_transacao, 0) - else - coalesce(km_apurada_registrado_com_ar_inoperante, 0) - + coalesce(km_apurada_autuado_ar_inoperante, 0) - + coalesce(km_apurada_autuado_seguranca, 0) - + coalesce(km_apurada_autuado_limpezaequipamento, 0) - + coalesce(km_apurada_licenciado_sem_ar_n_autuado, 0) - + coalesce(km_apurada_licenciado_com_ar_n_autuado, 0) - + coalesce(km_apurada_sem_transacao, 0) - + coalesce(km_apurada_n_vistoriado, 0) - + coalesce(km_apurada_n_licenciado, 0) - end as km_apurada, - km_planejada_dia as km_planejada, - valor_a_pagar as valor_subsidio_pago, - valor_penalidade - from {{ ref("subsidio_sumario_servico_dia_pagamento") }} as sdp - --`rj-smtr.dashboard_subsidio_sppo_v2.sumario_servico_dia_pagamento` - left join planejada as p using (data, servico, consorcio) - where - data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") - {% if is_incremental() %} - and data between date("{{ var("start_date") }}") and date_add( - date("{{ var("end_date") }}"), interval 1 day - ) - {% endif %} - ) -select - data, - tipo_dia, - consorcio, - servico, - vista, - viagens, - km_apurada, - km_planejada, - 100 * km_apurada / km_planejada as perc_km_planejada, - valor_subsidio_pago, - valor_penalidade -from pagamento diff --git a/queries/models/monitoramento/monitoramento_servico_dia.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia.sql similarity index 100% rename from queries/models/monitoramento/monitoramento_servico_dia.sql rename to queries/models/monitoramento/staging/monitoramento_servico_dia.sql diff --git a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia_tipo_viagem.sql similarity index 100% rename from queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem.sql rename to queries/models/monitoramento/staging/monitoramento_servico_dia_tipo_viagem.sql diff --git a/queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia_tipo_viagem_v2.sql similarity index 100% rename from queries/models/monitoramento/monitoramento_servico_dia_tipo_viagem_v2.sql rename to queries/models/monitoramento/staging/monitoramento_servico_dia_tipo_viagem_v2.sql diff --git a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql new file mode 100644 index 00000000..ac4ff519 --- /dev/null +++ b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql @@ -0,0 +1,84 @@ +{{ config(materialized="ephemeral") }} + +with + valores_subsidio AS ( +SELECT + data, + sdp.tipo_dia, + sdp.consorcio, + servico, + sdp.viagens_dia, + SUM( + CASE + WHEN data >= DATE("2024-09-01") + AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") + THEN km_apurada_faixa + WHEN data < DATE("2024-09-01") + THEN km_apurada_faixa + ELSE 0 + END + ) AS km_apurada, + km_planejada_dia, + valor_a_pagar, + valor_penalidade +FROM + {{ ref("subsidio_sumario_servico_dia_pagamento") }} as sdp + -- rj-smtr.financeiro.subsidio_sumario_servico_dia_pagamento +left join {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} as sdtv + using (data, servico) + WHERE + data BETWEEN DATE("{{ var("start_date") }}") + AND DATE("{{ var("end_date") }}") + group by data, + tipo_dia, + consorcio, + servico, + viagens_dia, + km_planejada_dia, + valor_a_pagar, + valor_penalidade + ), + planejada as ( + select distinct data, consorcio, servico, vista + from {{ ref("viagem_planejada") }} + -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` + where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + and (id_tipo_trajeto = 0 or id_tipo_trajeto is null) + and format_time("%T", time(faixa_horaria_inicio)) != "00:00:00" + ), + pagamento as ( + select + data, + tipo_dia, + consorcio, + servico, + vista, + viagens_dia as viagens, + km_apurada, + km_planejada_dia as km_planejada, + valor_a_pagar as valor_subsidio_pago, + valor_penalidade + from valores_subsidio as sdp + left join planejada as p using (data, servico, consorcio) + where + data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + {% if is_incremental() %} + and data between date("{{ var("start_date") }}") and date_add( + date("{{ var("end_date") }}"), interval 1 day + ) + {% endif %} + ) +select + data, + tipo_dia, + consorcio, + servico, + vista, + viagens, + km_apurada, + km_planejada, + ROUND(100 * km_apurada / km_planejada, 2) as perc_km_planejada, + valor_subsidio_pago, + valor_penalidade +from pagamento From 0ebe90a7197f585531fa96d21fbf6601ac02f8c6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 20:17:50 +0000 Subject: [PATCH 21/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../monitoramento/staging/monitoramento_servico_dia_v2.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql index ac4ff519..296832e2 100644 --- a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql +++ b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql @@ -10,8 +10,8 @@ SELECT sdp.viagens_dia, SUM( CASE - WHEN data >= DATE("2024-09-01") - AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") + WHEN data >= DATE("2024-09-01") + AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") THEN km_apurada_faixa WHEN data < DATE("2024-09-01") THEN km_apurada_faixa From 609c4725b0d86a4bfe1282060c2512b9b4dd1ad8 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 16 Jan 2025 15:32:28 -0300 Subject: [PATCH 22/23] adiciona data a variavel DATA_SUBSIDIO_V9A_INICIO --- .../staging/monitoramento_servico_dia_v2.sql | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql index 296832e2..7f5f40da 100644 --- a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql +++ b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql @@ -10,10 +10,10 @@ SELECT sdp.viagens_dia, SUM( CASE - WHEN data >= DATE("2024-09-01") - AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") + WHEN data >= DATE("{{ var('DATA_SUBSIDIO_V9A_INICIO') }}") + AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") THEN km_apurada_faixa - WHEN data < DATE("2024-09-01") + WHEN data < DATE("{{ var('DATA_SUBSIDIO_V9A_INICIO') }}") THEN km_apurada_faixa ELSE 0 END @@ -27,8 +27,8 @@ FROM left join {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} as sdtv using (data, servico) WHERE - data BETWEEN DATE("{{ var("start_date") }}") - AND DATE("{{ var("end_date") }}") + data BETWEEN DATE("{{ var('start_date') }}") + AND DATE("{{ var('end_date') }}") group by data, tipo_dia, consorcio, @@ -43,7 +43,7 @@ left join {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} as sdtv from {{ ref("viagem_planejada") }} -- `rj-smtr.projeto_subsidio_sppo.viagem_planejada` where - data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + data >= date("{{ var('DATA_SUBSIDIO_V9_INICIO') }}") and (id_tipo_trajeto = 0 or id_tipo_trajeto is null) and format_time("%T", time(faixa_horaria_inicio)) != "00:00:00" ), @@ -62,10 +62,10 @@ left join {{ ref("subsidio_faixa_servico_dia_tipo_viagem") }} as sdtv from valores_subsidio as sdp left join planejada as p using (data, servico, consorcio) where - data >= date("{{ var("DATA_SUBSIDIO_V9_INICIO") }}") + data >= date("{{ var('DATA_SUBSIDIO_V9_INICIO') }}") {% if is_incremental() %} - and data between date("{{ var("start_date") }}") and date_add( - date("{{ var("end_date") }}"), interval 1 day + and data between date("{{ var('start_date') }}") and date_add( + date("{{ var('end_date') }}"), interval 1 day ) {% endif %} ) From 582f919f667cb788bca50c8de1a4c9e1a4135572 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 18:33:47 +0000 Subject: [PATCH 23/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../monitoramento/staging/monitoramento_servico_dia_v2.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql index 7f5f40da..b4f1f556 100644 --- a/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql +++ b/queries/models/monitoramento/staging/monitoramento_servico_dia_v2.sql @@ -10,8 +10,8 @@ SELECT sdp.viagens_dia, SUM( CASE - WHEN data >= DATE("{{ var('DATA_SUBSIDIO_V9A_INICIO') }}") - AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") + WHEN data >= DATE("{{ var('DATA_SUBSIDIO_V9A_INICIO') }}") + AND tipo_viagem NOT IN ("Não licenciado", "Não vistoriado") THEN km_apurada_faixa WHEN data < DATE("{{ var('DATA_SUBSIDIO_V9A_INICIO') }}") THEN km_apurada_faixa