From b56212f061d2aead478d298bdd608f2253ceef21 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 30 Jul 2024 16:15:42 -0300 Subject: [PATCH 01/30] =?UTF-8?q?remove=20filtro=20infra=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipelines/migration/veiculo/tasks.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/migration/veiculo/tasks.py b/pipelines/migration/veiculo/tasks.py index b9eabd5d..c8dbed59 100644 --- a/pipelines/migration/veiculo/tasks.py +++ b/pipelines/migration/veiculo/tasks.py @@ -13,7 +13,7 @@ from prefect import task from pipelines.constants import constants as smtr_constants -from pipelines.migration.utils import connect_ftp, data_info_str, filter_data +from pipelines.migration.utils import connect_ftp, data_info_str from pipelines.migration.veiculo.constants import constants from pipelines.utils.utils import log # ,get_vault_secret @@ -200,9 +200,9 @@ def pre_treatment_sppo_infracao(status: dict, timestamp: datetime): log("Updating valor type to float...", level="info") data["valor"] = data["valor"].str.replace(",", ".").astype(float) - filters = ["modo != 'ONIBUS'"] - log(f"Filtering '{filters}'...", level="info") - data = filter_data(data, filters) + # filters = ["modo != 'ONIBUS'"] + # log(f"Filtering '{filters}'...", level="info") + # data = filter_data(data, filters) log("Filtering null primary keys...", level="info") primary_key = ["placa", "id_auto_infracao"] From 06487d13dd3856813bae42bad74e5b4e98761421 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 30 Jul 2024 16:16:58 -0300 Subject: [PATCH 02/30] remove prefixo sppo --- .../staging/licenciamento_stu_staging.sql | 46 +++++++++++++++++++ .../sppo_licenciamento_stu_staging.sql | 45 ------------------ 2 files changed, 46 insertions(+), 45 deletions(-) create mode 100644 queries/models/veiculo/staging/licenciamento_stu_staging.sql delete mode 100644 queries/models/veiculo/staging/sppo_licenciamento_stu_staging.sql diff --git a/queries/models/veiculo/staging/licenciamento_stu_staging.sql b/queries/models/veiculo/staging/licenciamento_stu_staging.sql new file mode 100644 index 00000000..72526166 --- /dev/null +++ b/queries/models/veiculo/staging/licenciamento_stu_staging.sql @@ -0,0 +1,46 @@ + +{{ + config( + materialized='view', + alias='licenciamento_stu' + ) +}} + +SELECT + data, + SAFE_CAST(DATETIME(TIMESTAMP_TRUNC(TIMESTAMP(timestamp_captura), SECOND), "America/Sao_Paulo" ) AS DATETIME) timestamp_captura, + SAFE_CAST(JSON_VALUE(content,"$.modo") AS STRING) modo, + SAFE_CAST(id_veiculo AS STRING) id_veiculo, + SAFE_CAST(JSON_VALUE(content,"$.ano_fabricacao") AS INT64) ano_fabricacao, + SAFE_CAST(JSON_VALUE(content,"$.carroceria") AS STRING) carroceria, + CASE + WHEN + JSON_VALUE(content,"$.data_ultima_vistoria") = "" THEN NULL + ELSE + SAFE_CAST(PARSE_DATETIME("%d/%m/%Y", JSON_VALUE(content,"$.data_ultima_vistoria")) AS DATE) + END AS data_ultima_vistoria, + SAFE_CAST(JSON_VALUE(content,"$.id_carroceria") AS INT64) id_carroceria, + SAFE_CAST(JSON_VALUE(content,"$.id_chassi") AS INT64) id_chassi, + SAFE_CAST(JSON_VALUE(content,"$.id_fabricante_chassi") AS INT64) id_fabricante_chassi, + SAFE_CAST(JSON_VALUE(content,"$.id_interno_carroceria") AS INT64) id_interno_carroceria, + SAFE_CAST(JSON_VALUE(content,"$.id_planta") AS INT64) id_planta, + SAFE_CAST(JSON_VALUE(content,"$.indicador_ar_condicionado") AS BOOL) indicador_ar_condicionado, + SAFE_CAST(JSON_VALUE(content,"$.indicador_elevador") AS BOOL) indicador_elevador, + SAFE_CAST(JSON_VALUE(content,"$.indicador_usb") AS BOOL) indicador_usb, + SAFE_CAST(JSON_VALUE(content,"$.indicador_wifi") AS BOOL) indicador_wifi, + SAFE_CAST(JSON_VALUE(content,"$.nome_chassi") AS STRING) nome_chassi, + SAFE_CAST(JSON_VALUE(content,"$.permissao") AS STRING) permissao, + SAFE_CAST(JSON_VALUE(content,"$.placa") AS STRING) placa, + SAFE_CAST(JSON_VALUE(content,"$.quantidade_lotacao_pe") AS INT64) quantidade_lotacao_pe, + SAFE_CAST(JSON_VALUE(content,"$.quantidade_lotacao_sentado") AS INT64) quantidade_lotacao_sentado, + SAFE_CAST(JSON_VALUE(content,"$.tipo_combustivel") AS STRING) tipo_combustivel, + SAFE_CAST(JSON_VALUE(content,"$.tipo_veiculo") AS STRING) tipo_veiculo, + SAFE_CAST(JSON_VALUE(content,"$.status") AS STRING) status, + CASE + WHEN + JSON_VALUE(content,"$.data_inicio_vinculo") = "" THEN NULL + ELSE + SAFE_CAST(PARSE_DATETIME("%d/%m/%Y", JSON_VALUE(content,"$.data_inicio_vinculo")) AS DATE) + END AS data_inicio_vinculo, + FROM + {{ source('veiculo_staging','sppo_licenciamento_stu') }} as t \ No newline at end of file diff --git a/queries/models/veiculo/staging/sppo_licenciamento_stu_staging.sql b/queries/models/veiculo/staging/sppo_licenciamento_stu_staging.sql deleted file mode 100644 index 61a7dc0f..00000000 --- a/queries/models/veiculo/staging/sppo_licenciamento_stu_staging.sql +++ /dev/null @@ -1,45 +0,0 @@ - -{{ config( - materialized='view', - alias='sppo_licenciamento_stu' -) -}} - -SELECT - data, - SAFE_CAST(DATETIME(TIMESTAMP_TRUNC(TIMESTAMP(timestamp_captura), SECOND), "America/Sao_Paulo" ) AS DATETIME) timestamp_captura, - SAFE_CAST(JSON_VALUE(content,"$.modo") AS STRING) modo, - SAFE_CAST(id_veiculo AS STRING) id_veiculo, - SAFE_CAST(JSON_VALUE(content,"$.ano_fabricacao") AS INT64) ano_fabricacao, - SAFE_CAST(JSON_VALUE(content,"$.carroceria") AS STRING) carroceria, - CASE - WHEN JSON_VALUE(content,"$.data_ultima_vistoria") = "" THEN NULL - ELSE - SAFE_CAST(PARSE_DATETIME("%d/%m/%Y", JSON_VALUE(content,"$.data_ultima_vistoria")) AS DATE) - END - AS data_ultima_vistoria, - SAFE_CAST(JSON_VALUE(content,"$.id_carroceria") AS INT64) id_carroceria, - SAFE_CAST(JSON_VALUE(content,"$.id_chassi") AS INT64) id_chassi, - SAFE_CAST(JSON_VALUE(content,"$.id_fabricante_chassi") AS INT64) id_fabricante_chassi, - SAFE_CAST(JSON_VALUE(content,"$.id_interno_carroceria") AS INT64) id_interno_carroceria, - SAFE_CAST(JSON_VALUE(content,"$.id_planta") AS INT64) id_planta, - SAFE_CAST(JSON_VALUE(content,"$.indicador_ar_condicionado") AS BOOL) indicador_ar_condicionado, - SAFE_CAST(JSON_VALUE(content,"$.indicador_elevador") AS BOOL) indicador_elevador, - SAFE_CAST(JSON_VALUE(content,"$.indicador_usb") AS BOOL) indicador_usb, - SAFE_CAST(JSON_VALUE(content,"$.indicador_wifi") AS BOOL) indicador_wifi, - SAFE_CAST(JSON_VALUE(content,"$.nome_chassi") AS STRING) nome_chassi, - SAFE_CAST(JSON_VALUE(content,"$.permissao") AS STRING) permissao, - SAFE_CAST(JSON_VALUE(content,"$.placa") AS STRING) placa, - SAFE_CAST(JSON_VALUE(content,"$.quantidade_lotacao_pe") AS INT64) quantidade_lotacao_pe, - SAFE_CAST(JSON_VALUE(content,"$.quantidade_lotacao_sentado") AS INT64) quantidade_lotacao_sentado, - SAFE_CAST(JSON_VALUE(content,"$.tipo_combustivel") AS STRING) tipo_combustivel, - SAFE_CAST(JSON_VALUE(content,"$.tipo_veiculo") AS STRING) tipo_veiculo, - SAFE_CAST(JSON_VALUE(content,"$.status") AS STRING) status, - CASE - WHEN JSON_VALUE(content,"$.data_inicio_vinculo") = "" THEN NULL - ELSE - SAFE_CAST(PARSE_DATETIME("%d/%m/%Y", JSON_VALUE(content,"$.data_inicio_vinculo")) AS DATE) - END - AS data_inicio_vinculo, - FROM - {{ source('veiculo_staging','sppo_licenciamento_stu') }} as t \ No newline at end of file From 1a612969a3562db0756b86f8625fba0432fb97f0 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 30 Jul 2024 16:17:19 -0300 Subject: [PATCH 03/30] remove prefixo sppo --- .../{sppo_infracao_staging.sql => infracao_staging.sql} | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) rename queries/models/veiculo/staging/{sppo_infracao_staging.sql => infracao_staging.sql} (90%) diff --git a/queries/models/veiculo/staging/sppo_infracao_staging.sql b/queries/models/veiculo/staging/infracao_staging.sql similarity index 90% rename from queries/models/veiculo/staging/sppo_infracao_staging.sql rename to queries/models/veiculo/staging/infracao_staging.sql index bd2cb218..c6202efd 100644 --- a/queries/models/veiculo/staging/sppo_infracao_staging.sql +++ b/queries/models/veiculo/staging/infracao_staging.sql @@ -1,7 +1,7 @@ {{ config( materialized='view', - alias='sppo_infracao' + alias='infracao' ) }} @@ -18,7 +18,8 @@ SELECT SAFE_CAST(JSON_VALUE(content,'$.id_infracao') AS STRING) id_infracao, SAFE_CAST(JSON_VALUE(content,'$.infracao') AS STRING) infracao, SAFE_CAST(JSON_VALUE(content,'$.status') AS STRING) status, - IF(JSON_VALUE(content,'$.data_pagamento') = "", NULL, PARSE_DATE("%d/%m/%Y", JSON_VALUE(content,'$.data_pagamento'))) data_pagamento + IF(JSON_VALUE(content,'$.data_pagamento') = "", NULL, PARSE_DATE("%d/%m/%Y", JSON_VALUE(content,'$.data_pagamento'))) data_pagamento, + SAFE_CAST(JSON_VALUE(content,'$.servico') AS STRING) servico FROM {{ source('veiculo_staging','sppo_infracao') }} as t From 9cf6824273415220ad7ebe3b62d5d2a742618db4 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 30 Jul 2024 16:18:16 -0300 Subject: [PATCH 04/30] inclui todos os tipo_veiculo --- queries/models/veiculo/licenciamento.sql | 62 ++++++++++++++++ queries/models/veiculo/sppo_licenciamento.sql | 71 ------------------- queries/models/veiculo/sppo_veiculo_dia.sql | 3 +- 3 files changed, 64 insertions(+), 72 deletions(-) create mode 100644 queries/models/veiculo/licenciamento.sql delete mode 100644 queries/models/veiculo/sppo_licenciamento.sql diff --git a/queries/models/veiculo/licenciamento.sql b/queries/models/veiculo/licenciamento.sql new file mode 100644 index 00000000..bbd4bac2 --- /dev/null +++ b/queries/models/veiculo/licenciamento.sql @@ -0,0 +1,62 @@ +-- depends_on: {{ ref('aux_sppo_licenciamento_vistoria_atualizada') }} +{{ + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + unique_key=["data", "id_veiculo"], + incremental_strategy="insert_overwrite", + ) +}} + +{% if execute and is_incremental() %} + {% set licenciamento_date = run_query(get_license_date()).columns[0].values()[0] %} +{% endif %} + +WITH stu AS ( + SELECT + * EXCEPT(data), + DATE(data) AS data + FROM + {{ ref("sppo_licenciamento_stu_staging") }} AS t + {% if is_incremental() %} + WHERE + DATE(data) = DATE("{{ licenciamento_date }}") + {% endif %} +), +stu_rn AS ( + SELECT + * EXCEPT (timestamp_captura), + EXTRACT(YEAR FROM data_ultima_vistoria) AS ano_ultima_vistoria, + ROW_NUMBER() OVER (PARTITION BY data, id_veiculo) rn + FROM + stu +), +stu_ano_ultima_vistoria AS ( + -- Temporariamente considerando os dados de vistoria enviados pela TR/SUBTT/CGLF + SELECT + s.* EXCEPT(ano_ultima_vistoria), + CASE + WHEN data >= "2024-03-01" AND c.ano_ultima_vistoria > s.ano_ultima_vistoria THEN c.ano_ultima_vistoria + WHEN data >= "2024-03-01" THEN COALESCE(s.ano_ultima_vistoria, c.ano_ultima_vistoria) + ELSE s.ano_ultima_vistoria + END AS ano_ultima_vistoria_atualizado, + FROM + stu_rn AS s + LEFT JOIN + ( + SELECT + id_veiculo, + placa, + ano_ultima_vistoria + FROM + {{ ref("aux_sppo_licenciamento_vistoria_atualizada") }} + ) AS c + USING(id_veiculo, placa) +) +SELECT + * EXCEPT(rn), +FROM + stu_ano_ultima_vistoria +WHERE + rn = 1 + diff --git a/queries/models/veiculo/sppo_licenciamento.sql b/queries/models/veiculo/sppo_licenciamento.sql deleted file mode 100644 index ec581d95..00000000 --- a/queries/models/veiculo/sppo_licenciamento.sql +++ /dev/null @@ -1,71 +0,0 @@ --- depends_on: {{ ref('aux_sppo_licenciamento_vistoria_atualizada') }} -{{ - config( - materialized="incremental", - partition_by={"field": "data", "data_type": "date", "granularity": "day"}, - unique_key=["data", "id_veiculo"], - incremental_strategy="insert_overwrite", - ) -}} - -{% if execute %} - {% set licenciamento_date = run_query(get_license_date()).columns[0].values()[0] %} -{% endif %} - -with - -- Tabela de licenciamento - stu as ( - select - * except(data), - date(data) AS data - from - {{ ref("sppo_licenciamento_stu_staging") }} as t - where - date(data) = date("{{ licenciamento_date }}") - and tipo_veiculo not like "%ROD%" - ), - stu_rn AS ( - select - * except (timestamp_captura), - EXTRACT(YEAR FROM data_ultima_vistoria) AS ano_ultima_vistoria, - ROW_NUMBER() OVER (PARTITION BY data, id_veiculo) rn - from - stu - ), - stu_ano_ultima_vistoria AS ( - -- Temporariamente considerando os dados de vistoria enviados pela TR/SUBTT/CGLF - {% if var("run_date") >= "2024-03-01" %} - SELECT - s.* EXCEPT(ano_ultima_vistoria), - CASE - WHEN c.ano_ultima_vistoria > s.ano_ultima_vistoria THEN c.ano_ultima_vistoria - ELSE COALESCE(s.ano_ultima_vistoria, c.ano_ultima_vistoria) - END AS ano_ultima_vistoria_atualizado, - FROM - stu_rn AS s - LEFT JOIN - ( - SELECT - id_veiculo, - placa, - ano_ultima_vistoria - FROM - {{ ref("aux_sppo_licenciamento_vistoria_atualizada") }} - ) AS c - USING - (id_veiculo, placa) - {% else %} - SELECT - s.* EXCEPT(ano_ultima_vistoria), - s.ano_ultima_vistoria AS ano_ultima_vistoria_atualizado, - FROM - stu_rn AS s - {% endif %} - ) -select - * except(rn), -from - stu_ano_ultima_vistoria -where - rn = 1 - diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index d05e761e..58d12ee4 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -28,9 +28,10 @@ WITH ELSE FALSE END AS indicador_vistoriado, FROM - {{ ref("sppo_licenciamento") }} --`rj-smtr`.`veiculo`.`sppo_licenciamento` + {{ ref("licenciamento") }} --`rj-smtr`.`veiculo`.`licenciamento` WHERE data = DATE("{{ licenciamento_date }}") + AND tipo_veiculo NOT LIKE "%ROD%" ), gps AS ( SELECT From 526fe567ade9b8075f7eb8c07255bd29c6f1957e Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 11:35:04 -0300 Subject: [PATCH 05/30] ajusta tabela licenciamento --- queries/models/veiculo/licenciamento.sql | 28 ++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/queries/models/veiculo/licenciamento.sql b/queries/models/veiculo/licenciamento.sql index bbd4bac2..9ae15b2c 100644 --- a/queries/models/veiculo/licenciamento.sql +++ b/queries/models/veiculo/licenciamento.sql @@ -17,7 +17,7 @@ WITH stu AS ( * EXCEPT(data), DATE(data) AS data FROM - {{ ref("sppo_licenciamento_stu_staging") }} AS t + {{ ref("licenciamento_stu_staging") }} AS t {% if is_incremental() %} WHERE DATE(data) = DATE("{{ licenciamento_date }}") @@ -54,7 +54,31 @@ stu_ano_ultima_vistoria AS ( USING(id_veiculo, placa) ) SELECT - * EXCEPT(rn), + data, + modo, + id_veiculo, + ano_fabricacao, + carroceria, + data_ultima_vistoria, + id_carroceria, + id_chassi, + id_fabricante_chassi, + id_interno_carroceria, + id_planta, + indicador_ar_condicionado, + indicador_elevador, + indicador_usb, + indicador_wifi, + nome_chassi, + permissao, + placa, + quantidade_lotacao_pe, + quantidade_lotacao_sentado, + tipo_combustivel, + tipo_veiculo, + status, + data_inicio_vinculo, + ano_ultima_vistoria_atualizado FROM stu_ano_ultima_vistoria WHERE From aecf7d9fdc0bafa1ee137403d3556dc31c70d66b Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 11:35:20 -0300 Subject: [PATCH 06/30] cria modelo filtrando licenciamento do sppo --- queries/models/veiculo/sppo_licenciamento.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 queries/models/veiculo/sppo_licenciamento.sql diff --git a/queries/models/veiculo/sppo_licenciamento.sql b/queries/models/veiculo/sppo_licenciamento.sql new file mode 100644 index 00000000..28a8715d --- /dev/null +++ b/queries/models/veiculo/sppo_licenciamento.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="ephemeral" + ) +}} + +SELECT + * +FROM + {{ ref("licenciamento") }} +WHERE + tipo_veiculo NOT LIKE "%ROD%" \ No newline at end of file From 047fd4f178b23bedfb7063e41538b9a6e82f6120 Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 11:36:55 -0300 Subject: [PATCH 07/30] adiciona novas colunas de controle --- queries/models/veiculo/sppo_veiculo_dia.sql | 95 ++++++++++----------- 1 file changed, 47 insertions(+), 48 deletions(-) diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index 58d12ee4..66ed7e26 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -1,4 +1,4 @@ --- depends_on: {{ ref('sppo_licenciamento_stu_staging') }} +-- depends_on: {{ ref('licenciamento_stu_staging') }} {{ config( materialized="incremental", @@ -12,8 +12,7 @@ {% set licenciamento_date = run_query(get_license_date()).columns[0].values()[0] %} {% endif %} -WITH - licenciamento AS ( +WITH licenciamento AS ( SELECT DATE("{{ var('run_date') }}") AS data, id_veiculo, @@ -22,23 +21,24 @@ WITH indicador_ar_condicionado, TRUE AS indicador_licenciado, CASE - WHEN ano_ultima_vistoria_atualizado >= CAST(EXTRACT(YEAR FROM DATE_SUB(DATE("{{ var('run_date') }}"), INTERVAL {{ var('sppo_licenciamento_validade_vistoria_ano') }} YEAR)) AS INT64) THEN TRUE -- Última vistoria realizada dentro do período válido - WHEN data_ultima_vistoria IS NULL AND DATE_DIFF(DATE("{{ var('run_date') }}"), data_inicio_vinculo, DAY) <= {{ var('sppo_licenciamento_tolerancia_primeira_vistoria_dia') }} THEN TRUE -- Caso o veículo seja novo, existe a tolerância de 15 dias para a primeira vistoria - WHEN ano_fabricacao IN (2023, 2024) AND CAST(EXTRACT(YEAR FROM DATE("{{ var('run_date') }}")) AS INT64) = 2024 THEN TRUE -- Caso o veículo tiver ano de fabricação 2023 ou 2024, será considerado como vistoriado apenas em 2024 (regra de transição) - ELSE FALSE - END AS indicador_vistoriado, + WHEN ano_ultima_vistoria_atualizado >= CAST(EXTRACT(YEAR FROM DATE_SUB(DATE("{{ var('run_date') }}"), INTERVAL {{ var('sppo_licenciamento_validade_vistoria_ano') }} YEAR)) AS INT64) THEN TRUE -- Última vistoria realizada dentro do período válido + WHEN data_ultima_vistoria IS NULL AND DATE_DIFF(DATE("{{ var('run_date') }}"), data_inicio_vinculo, DAY) <= {{ var('sppo_licenciamento_tolerancia_primeira_vistoria_dia') }} THEN TRUE -- Caso o veículo seja novo, existe a tolerância de 15 dias para a primeira vistoria + WHEN ano_fabricacao IN (2023, 2024) AND CAST(EXTRACT(YEAR FROM DATE("{{ var('run_date') }}")) AS INT64) = 2024 THEN TRUE -- Caso o veículo tiver ano de fabricação 2023 ou 2024, será considerado como vistoriado apenas em 2024 (regra de transição) + ELSE FALSE + END AS indicador_vistoriado, + data_inicio_vinculo FROM - {{ ref("licenciamento") }} --`rj-smtr`.`veiculo`.`licenciamento` + {{ ref("sppo_licenciamento") }} --`rj-smtr`.`veiculo`.`licenciamento` WHERE data = DATE("{{ licenciamento_date }}") - AND tipo_veiculo NOT LIKE "%ROD%" - ), - gps AS ( +), +gps AS ( SELECT DISTINCT data, id_veiculo FROM - {{ ref("gps_sppo") }} -- `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` + -- {{ ref("gps_sppo") }} + `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` WHERE data = DATE("{{ var('run_date') }}") ), autuacoes AS ( @@ -54,17 +54,19 @@ WITH {% endif -%} data = DATE("{{ infracao_date }}") AND data_infracao = DATE("{{ var('run_date') }}") - AND modo = "ONIBUS"), - registros_agente_verao AS ( - SELECT - DISTINCT data, - id_veiculo, - TRUE AS indicador_registro_agente_verao_ar_condicionado - FROM - {{ ref("sppo_registro_agente_verao") }} - WHERE - data = DATE("{{ var('run_date') }}") ), - autuacao_ar_condicionado AS ( + AND modo = "ONIBUS" +), +registros_agente_verao AS ( + SELECT + DISTINCT data, + id_veiculo, + TRUE AS indicador_registro_agente_verao_ar_condicionado + FROM + {{ ref("sppo_registro_agente_verao") }} + WHERE + data = DATE("{{ var('run_date') }}") +), +autuacao_ar_condicionado AS ( SELECT data, placa, @@ -99,8 +101,9 @@ WITH "025.XII", "025.XIII", "025.XIV", - "026.X") ), - autuacao_equipamento AS ( + "026.X") +), +autuacao_equipamento AS ( SELECT data, placa, @@ -125,8 +128,9 @@ WITH "025.VIII", "025.IX", "025.X", - "025.XI") ), - autuacao_limpeza AS ( + "025.XI") +), +autuacao_limpeza AS ( SELECT data, placa, @@ -144,20 +148,15 @@ WITH autuacao_ar_condicionado FULL JOIN autuacao_seguranca - USING - (data, - placa) + USING(data, placa) FULL JOIN autuacao_equipamento - USING - (data, - placa) + USING(data, placa) FULL JOIN autuacao_limpeza - USING - (data, - placa) ), - gps_licenciamento_autuacao AS ( + USING(data, placa) +), +gps_licenciamento_autuacao AS ( SELECT data, id_veiculo, @@ -200,29 +199,28 @@ WITH COALESCE(a.indicador_autuacao_equipamento, FALSE) AS indicador_autuacao_equipamento, COALESCE(r.indicador_registro_agente_verao_ar_condicionado, FALSE) AS indicador_registro_agente_verao_ar_condicionado) {% endif %} - AS indicadores + AS indicadores, + l.placa, + DATE("{{ licenciamento_date }}") AS data_licenciamento, + DATE("{{ infracao_date }}") AS data_infracao, FROM gps g LEFT JOIN licenciamento AS l - USING - (data, - id_veiculo) + USING(data, id_veiculo) LEFT JOIN autuacoes_agg AS a - USING - (data, - placa) + USING(data, placa) LEFT JOIN registros_agente_verao AS r - USING - (data, - id_veiculo)) + USING(data, id_veiculo) +) {% if var("run_date") < var("DATA_SUBSIDIO_V5_INICIO") %} SELECT gla.* EXCEPT(indicadores), TO_JSON(indicadores) AS indicadores, status, + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, "{{ var("version") }}" AS versao FROM gps_licenciamento_autuacao AS gla @@ -252,6 +250,7 @@ SELECT WHEN indicadores.indicador_ar_condicionado IS TRUE THEN "Licenciado com ar e não autuado" ELSE NULL END AS status, + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, "{{ var("version") }}" AS versao FROM gps_licenciamento_autuacao From 3ce93b92e78149821aab0a8fda3ca64eaf546d8d Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 11:37:27 -0300 Subject: [PATCH 08/30] ajusta nomes do modelo de staging --- queries/models/veiculo/sppo_infracao.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/models/veiculo/sppo_infracao.sql b/queries/models/veiculo/sppo_infracao.sql index 71074b0b..5e82b66f 100644 --- a/queries/models/veiculo/sppo_infracao.sql +++ b/queries/models/veiculo/sppo_infracao.sql @@ -12,7 +12,7 @@ }} {%- if execute %} - {% set infracao_date = run_query("SELECT MIN(SAFE_CAST(data AS DATE)) FROM " ~ ref('sppo_infracao_staging') ~ " WHERE SAFE_CAST(data AS DATE) >= DATE_ADD(DATE('" ~ var("run_date") ~ "'), INTERVAL 7 DAY)").columns[0].values()[0] %} + {% set infracao_date = run_query("SELECT MIN(SAFE_CAST(data AS DATE)) FROM " ~ ref('infracao_staging') ~ " WHERE SAFE_CAST(data AS DATE) >= DATE_ADD(DATE('" ~ var("run_date") ~ "'), INTERVAL 7 DAY)").columns[0].values()[0] %} {% endif -%} WITH @@ -21,7 +21,7 @@ WITH * EXCEPT(data), SAFE_CAST(data AS DATE) AS data FROM - {{ ref("sppo_infracao_staging") }} as t + {{ ref("infracao_staging") }} as t WHERE DATE(data) = DATE("{{ infracao_date }}") ), From 31fcadfef3144633655da53750ca19a94f7c1458 Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 11:37:38 -0300 Subject: [PATCH 09/30] teste dev --- queries/dbt_project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index 4ae666c1..0ce44687 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -216,7 +216,7 @@ models: +schema: veiculo staging: +materialized: view - +schema: veiculo_staging + +schema: veiculo_staging_dbt br_rj_riodejaneiro_rdo: +materialized: view +schema: br_rj_riodejaneiro_rdo From 31a938661dd53c4d5c1810dfe2d389071b13448b Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 15:48:08 -0300 Subject: [PATCH 10/30] cria tabela geral de infracao --- queries/models/veiculo/infracao.sql | 44 +++++++++++++++++++ queries/models/veiculo/sppo_infracao.sql | 42 +++--------------- .../veiculo/staging/infracao_staging.sql | 8 ++-- 3 files changed, 55 insertions(+), 39 deletions(-) create mode 100644 queries/models/veiculo/infracao.sql diff --git a/queries/models/veiculo/infracao.sql b/queries/models/veiculo/infracao.sql new file mode 100644 index 00000000..0eef9d61 --- /dev/null +++ b/queries/models/veiculo/infracao.sql @@ -0,0 +1,44 @@ + +{{ + config( + materialized='incremental', + partition_by={ + "field":"data", + "data_type": "date", + "granularity":"day" + }, + unique_key=['data', 'id_auto_infracao'], + incremental_strategy='insert_overwrite' + ) +}} + +{%- if execute and is_incremental() %} + {% set infracao_date = run_query("SELECT MIN(SAFE_CAST(data AS DATE)) FROM " ~ ref('infracao_staging') ~ " WHERE SAFE_CAST(data AS DATE) >= DATE_ADD(DATE('" ~ var("run_date") ~ "'), INTERVAL 7 DAY)").columns[0].values()[0] %} +{% endif -%} + +WITH infracao AS ( + SELECT + * EXCEPT(data), + SAFE_CAST(data AS DATE) AS data + FROM + {{ ref("infracao_staging") }} as t + {% if is_incremental() %} + WHERE + DATE(data) = DATE("{{ infracao_date }}") + {% endif %} +), +infracao_rn AS ( + SELECT + *, + ROW_NUMBER() OVER (PARTITION BY data, id_auto_infracao) rn + FROM + infracao +) +SELECT + * EXCEPT(rn), + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + "{{ var("version") }}" AS versao +FROM + infracao_rn +WHERE + rn = 1 \ No newline at end of file diff --git a/queries/models/veiculo/sppo_infracao.sql b/queries/models/veiculo/sppo_infracao.sql index 5e82b66f..e439f179 100644 --- a/queries/models/veiculo/sppo_infracao.sql +++ b/queries/models/veiculo/sppo_infracao.sql @@ -1,40 +1,12 @@ - - {{ config( - materialized='incremental', - partition_by={ - "field":"data", - "data_type": "date", - "granularity":"day" - }, - unique_key=['data', 'id_auto_infracao'], - incremental_strategy='insert_overwrite' -) +{{ + config( + materialized="ephemeral" + ) }} -{%- if execute %} - {% set infracao_date = run_query("SELECT MIN(SAFE_CAST(data AS DATE)) FROM " ~ ref('infracao_staging') ~ " WHERE SAFE_CAST(data AS DATE) >= DATE_ADD(DATE('" ~ var("run_date") ~ "'), INTERVAL 7 DAY)").columns[0].values()[0] %} -{% endif -%} - -WITH - infracao AS ( - SELECT - * EXCEPT(data), - SAFE_CAST(data AS DATE) AS data - FROM - {{ ref("infracao_staging") }} as t - WHERE - DATE(data) = DATE("{{ infracao_date }}") - ), - infracao_rn AS ( - SELECT - *, - ROW_NUMBER() OVER (PARTITION BY data, id_auto_infracao) rn - FROM - infracao - ) SELECT - * EXCEPT(rn) + * FROM - infracao_rn + {{ ref("infracao") }} WHERE - rn = 1 \ No newline at end of file + modo = 'ONIBUS' \ No newline at end of file diff --git a/queries/models/veiculo/staging/infracao_staging.sql b/queries/models/veiculo/staging/infracao_staging.sql index c6202efd..6eb56809 100644 --- a/queries/models/veiculo/staging/infracao_staging.sql +++ b/queries/models/veiculo/staging/infracao_staging.sql @@ -8,18 +8,18 @@ SELECT data, - SAFE_CAST(DATETIME(TIMESTAMP_TRUNC(TIMESTAMP(timestamp_captura), SECOND), "America/Sao_Paulo" ) AS DATETIME) timestamp_captura, + SAFE_CAST(JSON_VALUE(content,'$.id_infracao') AS STRING) id_infracao, SAFE_CAST(JSON_VALUE(content,'$.modo') AS STRING) modo, + SAFE_CAST(JSON_VALUE(content,'$.servico') AS STRING) servico, SAFE_CAST(JSON_VALUE(content,'$.permissao') AS STRING) permissao, SAFE_CAST(placa AS STRING) placa, SAFE_CAST(id_auto_infracao AS STRING) id_auto_infracao, PARSE_DATE("%d/%m/%Y", SAFE_CAST(JSON_VALUE(content,'$.data_infracao') AS STRING)) data_infracao, - SAFE_CAST(JSON_VALUE(content,'$.valor') AS FLOAT64) valor, - SAFE_CAST(JSON_VALUE(content,'$.id_infracao') AS STRING) id_infracao, SAFE_CAST(JSON_VALUE(content,'$.infracao') AS STRING) infracao, + SAFE_CAST(JSON_VALUE(content,'$.valor') AS FLOAT64) valor, SAFE_CAST(JSON_VALUE(content,'$.status') AS STRING) status, IF(JSON_VALUE(content,'$.data_pagamento') = "", NULL, PARSE_DATE("%d/%m/%Y", JSON_VALUE(content,'$.data_pagamento'))) data_pagamento, - SAFE_CAST(JSON_VALUE(content,'$.servico') AS STRING) servico + SAFE_CAST(DATETIME(TIMESTAMP_TRUNC(TIMESTAMP(timestamp_captura), SECOND), "America/Sao_Paulo" ) AS DATETIME) timestamp_captura FROM {{ source('veiculo_staging','sppo_infracao') }} as t From fa1a8547cba702ba180be5e16c79871b4f24b538 Mon Sep 17 00:00:00 2001 From: Rafael Date: Wed, 31 Jul 2024 15:48:19 -0300 Subject: [PATCH 11/30] add colunas de controle --- queries/models/veiculo/licenciamento.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/queries/models/veiculo/licenciamento.sql b/queries/models/veiculo/licenciamento.sql index 9ae15b2c..a006d279 100644 --- a/queries/models/veiculo/licenciamento.sql +++ b/queries/models/veiculo/licenciamento.sql @@ -78,7 +78,9 @@ SELECT tipo_veiculo, status, data_inicio_vinculo, - ano_ultima_vistoria_atualizado + ano_ultima_vistoria_atualizado, + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + "{{ var("version") }}" AS versao FROM stu_ano_ultima_vistoria WHERE From 7f3d12fe6744478a6c85ba3d967cc7cb633518e8 Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 5 Aug 2024 10:10:49 -0300 Subject: [PATCH 12/30] =?UTF-8?q?altera=C3=A7=C3=B5es=20flow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipelines/migration/veiculo/constants.py | 2 +- pipelines/migration/veiculo/tasks.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/migration/veiculo/constants.py b/pipelines/migration/veiculo/constants.py index 13fae061..2ef334cf 100644 --- a/pipelines/migration/veiculo/constants.py +++ b/pipelines/migration/veiculo/constants.py @@ -46,7 +46,7 @@ class constants(Enum): # pylint: disable=c0103 "names": SPPO_LICENCIAMENTO_MAPPING_KEYS.keys(), # pylint: disable=e1101 } - SPPO_INFRACAO_TABLE_ID = "sppo_infracao" + SPPO_INFRACAO_TABLE_ID = "infracao" SPPO_INFRACAO_MAPPING_KEYS = { "permissao": "permissao", diff --git a/pipelines/migration/veiculo/tasks.py b/pipelines/migration/veiculo/tasks.py index c8dbed59..fd27a4b7 100644 --- a/pipelines/migration/veiculo/tasks.py +++ b/pipelines/migration/veiculo/tasks.py @@ -204,9 +204,9 @@ def pre_treatment_sppo_infracao(status: dict, timestamp: datetime): # log(f"Filtering '{filters}'...", level="info") # data = filter_data(data, filters) - log("Filtering null primary keys...", level="info") - primary_key = ["placa", "id_auto_infracao"] - data.dropna(subset=primary_key, inplace=True) + # log("Filtering null primary keys...", level="info") + primary_key = ["id_auto_infracao"] + # data.dropna(subset=primary_key, inplace=True) # Check primary keys # pk_columns = ["placa", "id_auto_infracao"] From ad30e04389b3e89a29132238837e58ff9556a764 Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 5 Aug 2024 10:35:25 -0300 Subject: [PATCH 13/30] altera nome dos modelos no schema --- queries/models/veiculo/schema.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/models/veiculo/schema.yml b/queries/models/veiculo/schema.yml index a14206db..2d3ca22d 100644 --- a/queries/models/veiculo/schema.yml +++ b/queries/models/veiculo/schema.yml @@ -1,7 +1,7 @@ version: 2 models: - - name: sppo_infracao + - name: infracao description: "Tabela histórica de todas as multas aplicadas aos modos de transporte no município do Rio de Janeiro, com qualquer situação. Dados capturados diariamente de: https://www.data.rio/documents/multas-aplicadas-aos-modos-de-transporte-nos-%C3%BAltimos-cinco-anos" columns: @@ -34,7 +34,7 @@ models: CANCELADA - Multa foi cancelada através de um Processo de Recurso" - name: data_pagamento description: "Data de pagamento" - - name: sppo_licenciamento + - name: licenciamento description: "Tabela histórica de dados cadastrais dos veículos que operam o sistema de ônibus (BRT e SPPO), considerando tanto os licenciados no Sistema de Transporte Urbano (STU) quanto as solicitações válidas em andamento para ingresso no sistema" From 3eae5f12aacb398e9bf4141804a0e97271fb45ea Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 5 Aug 2024 12:45:26 -0300 Subject: [PATCH 14/30] =?UTF-8?q?ajusta=20indenta=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pipelines/migration/veiculo/constants.py | 2 +- queries/models/veiculo/sppo_veiculo_dia.sql | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/pipelines/migration/veiculo/constants.py b/pipelines/migration/veiculo/constants.py index 2ef334cf..db74642f 100644 --- a/pipelines/migration/veiculo/constants.py +++ b/pipelines/migration/veiculo/constants.py @@ -13,7 +13,7 @@ class constants(Enum): # pylint: disable=c0103 Constant values for rj_smtr veiculo """ - SPPO_LICENCIAMENTO_TABLE_ID = "sppo_licenciamento_stu" + SPPO_LICENCIAMENTO_TABLE_ID = "licenciamento_stu" SPPO_LICENCIAMENTO_MAPPING_KEYS = { "placa": "placa", diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index 66ed7e26..9571db2f 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -1,11 +1,11 @@ -- depends_on: {{ ref('licenciamento_stu_staging') }} {{ - config( - materialized="incremental", - partition_by={"field": "data", "data_type": "date", "granularity": "day"}, - unique_key=["data", "id_veiculo"], - incremental_strategy="insert_overwrite", - ) + config( + materialized="incremental", + partition_by={"field": "data", "data_type": "date", "granularity": "day"}, + unique_key=["data", "id_veiculo"], + incremental_strategy="insert_overwrite", + ) }} {% if execute %} @@ -54,7 +54,6 @@ gps AS ( {% endif -%} data = DATE("{{ infracao_date }}") AND data_infracao = DATE("{{ var('run_date') }}") - AND modo = "ONIBUS" ), registros_agente_verao AS ( SELECT @@ -200,9 +199,7 @@ gps_licenciamento_autuacao AS ( COALESCE(r.indicador_registro_agente_verao_ar_condicionado, FALSE) AS indicador_registro_agente_verao_ar_condicionado) {% endif %} AS indicadores, - l.placa, - DATE("{{ licenciamento_date }}") AS data_licenciamento, - DATE("{{ infracao_date }}") AS data_infracao, + l.placa FROM gps g LEFT JOIN @@ -220,6 +217,8 @@ SELECT gla.* EXCEPT(indicadores), TO_JSON(indicadores) AS indicadores, status, + DATE("{{ licenciamento_date }}") AS data_licenciamento, + DATE("{{ infracao_date }}") AS data_infracao, CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, "{{ var("version") }}" AS versao FROM @@ -250,6 +249,8 @@ SELECT WHEN indicadores.indicador_ar_condicionado IS TRUE THEN "Licenciado com ar e não autuado" ELSE NULL END AS status, + DATE("{{ licenciamento_date }}") AS data_licenciamento, + DATE("{{ infracao_date }}") AS data_infracao, CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, "{{ var("version") }}" AS versao FROM From d3d43e6ee94edc66ae6e669278f9b60d5a34aadd Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 5 Aug 2024 12:46:00 -0300 Subject: [PATCH 15/30] altera nomes dos sources --- queries/models/sources.yml | 6 +++--- queries/models/veiculo/staging/infracao_staging.sql | 4 ++-- .../models/veiculo/staging/licenciamento_stu_staging.sql | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/queries/models/sources.yml b/queries/models/sources.yml index c42edaae..c1222b7c 100644 --- a/queries/models/sources.yml +++ b/queries/models/sources.yml @@ -96,17 +96,17 @@ sources: - name: parametros_km - name: veiculo_staging - database: rj-smtr-staging + database: rj-smtr-dev tables: - name: sppo_vistoria_tr_subtt_cglf_2023 - name: sppo_vistoria_tr_subtt_cglf_2024 - name: sppo_vistoria_tr_subtt_cglf_pendentes_2024 - name: sppo_registro_agente_verao - - name: sppo_infracao + - name: infracao - name: sppo_licenciamento_solicitacao - name: sppo_licenciamento - - name: sppo_licenciamento_stu + - name: licenciamento_stu - name: dashboard_subsidio_sppo_staging database: rj-smtr-staging diff --git a/queries/models/veiculo/staging/infracao_staging.sql b/queries/models/veiculo/staging/infracao_staging.sql index 6eb56809..8ff42ab9 100644 --- a/queries/models/veiculo/staging/infracao_staging.sql +++ b/queries/models/veiculo/staging/infracao_staging.sql @@ -12,7 +12,7 @@ SELECT SAFE_CAST(JSON_VALUE(content,'$.modo') AS STRING) modo, SAFE_CAST(JSON_VALUE(content,'$.servico') AS STRING) servico, SAFE_CAST(JSON_VALUE(content,'$.permissao') AS STRING) permissao, - SAFE_CAST(placa AS STRING) placa, + SAFE_CAST(JSON_VALUE(content,'$.placa') AS STRING) placa, SAFE_CAST(id_auto_infracao AS STRING) id_auto_infracao, PARSE_DATE("%d/%m/%Y", SAFE_CAST(JSON_VALUE(content,'$.data_infracao') AS STRING)) data_infracao, SAFE_CAST(JSON_VALUE(content,'$.infracao') AS STRING) infracao, @@ -21,5 +21,5 @@ SELECT IF(JSON_VALUE(content,'$.data_pagamento') = "", NULL, PARSE_DATE("%d/%m/%Y", JSON_VALUE(content,'$.data_pagamento'))) data_pagamento, SAFE_CAST(DATETIME(TIMESTAMP_TRUNC(TIMESTAMP(timestamp_captura), SECOND), "America/Sao_Paulo" ) AS DATETIME) timestamp_captura FROM - {{ source('veiculo_staging','sppo_infracao') }} as t + {{ source('veiculo_staging','infracao') }} as t diff --git a/queries/models/veiculo/staging/licenciamento_stu_staging.sql b/queries/models/veiculo/staging/licenciamento_stu_staging.sql index 72526166..f7336564 100644 --- a/queries/models/veiculo/staging/licenciamento_stu_staging.sql +++ b/queries/models/veiculo/staging/licenciamento_stu_staging.sql @@ -43,4 +43,4 @@ SELECT SAFE_CAST(PARSE_DATETIME("%d/%m/%Y", JSON_VALUE(content,"$.data_inicio_vinculo")) AS DATE) END AS data_inicio_vinculo, FROM - {{ source('veiculo_staging','sppo_licenciamento_stu') }} as t \ No newline at end of file + {{ source('veiculo_staging','licenciamento_stu') }} as t \ No newline at end of file From dca3f50045d705aede52bbc170b117b3487085c5 Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 5 Aug 2024 12:46:14 -0300 Subject: [PATCH 16/30] =?UTF-8?q?filtra=20infra=C3=A7=C3=B5es=20sem=20plac?= =?UTF-8?q?a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- queries/models/veiculo/sppo_infracao.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/queries/models/veiculo/sppo_infracao.sql b/queries/models/veiculo/sppo_infracao.sql index e439f179..fcd9b116 100644 --- a/queries/models/veiculo/sppo_infracao.sql +++ b/queries/models/veiculo/sppo_infracao.sql @@ -9,4 +9,5 @@ SELECT FROM {{ ref("infracao") }} WHERE - modo = 'ONIBUS' \ No newline at end of file + modo = 'ONIBUS' + AND placa IS NOT NULL \ No newline at end of file From 2e31c1ab414d5ffd7b3d06307b9f8ead0559123b Mon Sep 17 00:00:00 2001 From: Rafael Date: Mon, 5 Aug 2024 13:29:28 -0300 Subject: [PATCH 17/30] ordena por timestamp captura --- queries/models/veiculo/infracao.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queries/models/veiculo/infracao.sql b/queries/models/veiculo/infracao.sql index 0eef9d61..ba17d0d1 100644 --- a/queries/models/veiculo/infracao.sql +++ b/queries/models/veiculo/infracao.sql @@ -30,7 +30,7 @@ WITH infracao AS ( infracao_rn AS ( SELECT *, - ROW_NUMBER() OVER (PARTITION BY data, id_auto_infracao) rn + ROW_NUMBER() OVER (PARTITION BY data, id_auto_infracao ORDER BY timestamp_captura DESC) rn FROM infracao ) From a70b0a365374dbc49ac604128257f03b5817eab0 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 6 Aug 2024 12:59:56 -0300 Subject: [PATCH 18/30] corrige nome dos modelos de staging --- queries/macros/get_license_date.sql | 2 +- queries/models/veiculo/staging/schema.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/queries/macros/get_license_date.sql b/queries/macros/get_license_date.sql index 3c43b28b..dc1621df 100644 --- a/queries/macros/get_license_date.sql +++ b/queries/macros/get_license_date.sql @@ -10,7 +10,7 @@ SELECT WHEN DATE("{{ var('run_date') }}") >= "2024-03-16" AND DATE("{{ var('run_date') }}") < "2024-04-01" THEN DATE("2024-04-09") ELSE ( SELECT MIN(DATE(data)) - FROM {{ ref("sppo_licenciamento_stu_staging") }} + FROM {{ ref("licenciamento_stu_staging") }} WHERE DATE(data) >= DATE_ADD(DATE("{{ var('run_date') }}"), INTERVAL 5 DAY) -- Admite apenas versões do STU igual ou após 2024-04-09 a partir de abril/24 devido à falha de atualização na fonte da dados (SIURB) AND (DATE("{{ var('run_date') }}") < "2024-04-01" OR DATE(data) >= '2024-04-09') diff --git a/queries/models/veiculo/staging/schema.yml b/queries/models/veiculo/staging/schema.yml index dce839d1..1aa553e6 100644 --- a/queries/models/veiculo/staging/schema.yml +++ b/queries/models/veiculo/staging/schema.yml @@ -58,7 +58,7 @@ models: description: "Empresa ao qual o veículo está vinculado" - name: ano_ultima_vistoria description: "Ano da última vistoria realizada pelo veículo" - - name: sppo_licenciamento_stu_staging + - name: licenciamento_stu_staging description: "View de Dados cadastrais dos veículos que operam o sistema de ônibus (BRT e SPPO) no município do Rio de Janeiro.\n Dados capturados diariamente de: https://www.data.rio/documents/c6c97d3c15434b5088965e25f85e27c3" columns: @@ -112,7 +112,7 @@ models: description: "Licenciado - Veículo licenciado no Sistema de Transporte Urbano (STU)" - name: data_inicio_vinculo description: "Data de início do vínculo do veículo no STU" - - name: sppo_infracao_staging + - name: infracao_staging description: "View de todas as multas aplicadas aos modos de transporte no município do Rio de Janeiro, com qualquer situação. Dados capturados diariamente de: https://www.data.rio/documents/multas-aplicadas-aos-modos-de-transporte-nos-%C3%BAltimos-cinco-anos" columns: From 65cc20a8f66d478d569a2f45114e7915edeacc4b Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 6 Aug 2024 13:00:09 -0300 Subject: [PATCH 19/30] alterar ambiente para prd --- queries/dbt_project.yml | 2 +- queries/models/sources.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index 3b883a41..d6a5a324 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -216,7 +216,7 @@ models: +schema: veiculo staging: +materialized: view - +schema: veiculo_staging_dbt + +schema: veiculo_staging br_rj_riodejaneiro_rdo: +materialized: view +schema: br_rj_riodejaneiro_rdo diff --git a/queries/models/sources.yml b/queries/models/sources.yml index 735dcc1e..dce2dcc3 100644 --- a/queries/models/sources.yml +++ b/queries/models/sources.yml @@ -98,7 +98,7 @@ sources: - name: parametros_km - name: veiculo_staging - database: rj-smtr-dev + database: rj-smtr-staging tables: - name: sppo_vistoria_tr_subtt_cglf_2023 From 3df9606bc292da758c64f19309a5d15f9e9eeec9 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 6 Aug 2024 13:06:52 -0300 Subject: [PATCH 20/30] adiciona novas colunas no schema --- queries/models/veiculo/schema.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/queries/models/veiculo/schema.yml b/queries/models/veiculo/schema.yml index 2d3ca22d..db15fb2b 100644 --- a/queries/models/veiculo/schema.yml +++ b/queries/models/veiculo/schema.yml @@ -34,6 +34,10 @@ models: CANCELADA - Multa foi cancelada através de um Processo de Recurso" - name: data_pagamento description: "Data de pagamento" + - name: datetime_ultima_atualizacao + description: "Última atualização (GMT-3)." + - name: versao + description: "SHA do repositório no Github" - name: licenciamento description: "Tabela histórica de dados cadastrais dos veículos que operam o sistema de ônibus (BRT e SPPO), considerando tanto os licenciados no Sistema de Transporte Urbano (STU) quanto as solicitações @@ -90,6 +94,10 @@ models: description: "Ano atualizado da última vistoria realizada pelo veículo" - name: data_inicio_vinculo description: "Data de início do vínculo do veículo no STU" + - name: datetime_ultima_atualizacao + description: "Última atualização (GMT-3)." + - name: versao + description: "SHA do repositório no Github" - name: sppo_licenciamento_solicitacao description: "Tabela histórica de dados cadastrais das solicitações em andamento para ingresso no Sistema de Transporte Urbano (STU)" columns: @@ -153,6 +161,8 @@ models: description: "Data de operação" - name: id_veiculo description: "Número de ordem do veículo, identificação que é exibida na lateral do ônibus" + - name: placa + description: "Placa do veículo" - name: indicadores description: "Indicadores para caraterização do status do veículo" - name: indicadores.indicador_licenciado @@ -179,6 +189,12 @@ models: - Autuado por limpeza/equipamento - Veículo que operou, foi licenciado, mas foi autuado cumulativamente por infrações relacionadas à limpeza e equipamentos do veículo\n - Sem ar e não autuado - Veículo que operou, foi licenciado sem ar condicionado e não foi autuado\n - Com ar e não autuado - Veículo que operou, foi licenciado com ar condicionado e não foi autuado" + - name: datetime_ultima_atualizacao + description: "Última atualização (GMT-3)." + - name: data_licenciamento + description: "Data do arquivo de licenciamento utilizado" + - name: data_infracao + description: "Data do arquivo de infrações utilizado" - name: versao description: "SHA do repositório no Github" - name: sppo_registro_agente_verao From 06c4566d5c49be7d69e07c3c213d05aefe837f5e Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 6 Aug 2024 13:50:38 -0300 Subject: [PATCH 21/30] add changelog --- pipelines/migration/veiculo/CHANGELOG.md | 7 +++++++ queries/models/veiculo/CHANGELOG.md | 23 ++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/pipelines/migration/veiculo/CHANGELOG.md b/pipelines/migration/veiculo/CHANGELOG.md index 4058be5e..fe91652b 100644 --- a/pipelines/migration/veiculo/CHANGELOG.md +++ b/pipelines/migration/veiculo/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog - veiculo +## [1.1.0] - 2024-08-06 + +### Alterado +- Alterações no tratamento do arquivo de infrações (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126): + - Remove coluna `placa` das primary keys + - Remove filtro de modo + ## [1.0.1] - 2024-05-28 ### Adicionado diff --git a/queries/models/veiculo/CHANGELOG.md b/queries/models/veiculo/CHANGELOG.md index c3ea77f1..e661c5ee 100644 --- a/queries/models/veiculo/CHANGELOG.md +++ b/queries/models/veiculo/CHANGELOG.md @@ -1,37 +1,46 @@ # Changelog - veiculo +## [2.0.0] - 2024-08-06 + +### Adicionado +- Criado os modelos `infracao.sql` e `licenciamento.sql` para guardar os dados completos de infração e licenciamento do STU (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) + +### Alterado +- Altera tipo dos modelos `sppo_infracao.sql` e `sppo_licenciamento.sql` para `ephemeral` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) +- Adiciona colunas `placa`, `data_licenciamento`, `data_infracao` e `datetime_ultima_atualizacao` no modelo `sppo_veiculo_dia.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) + ## [1.1.2] - 2024-04-25 -#### Adicionado +### Adicionado - Criada macro `get_license_date.sql` para retornar relacionamento entre `run_date` e data de licenciamento dos modelos `sppo_licenciamento_stu_staging.sql`, `sppo_licenciamento.sql` e `sppo_veiculo_dia.sql`. Nesta macro, serão admitidas apenas versões do STU igual ou após 2024-04-09 a partir de abril/24 devido à falha de atualização na fonte da dados (SIURB) (https://github.com/prefeitura-rio/queries-rj-smtr/pull/280) -#### Corrigido +### Corrigido - Altera lógica de particionamento nos modelos `sppo_licenciamento_stu_staging.sql`, `sppo_licenciamento.sql`, `sppo_infracao_staging.sql` e `sppo_infracao.sql` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/280) ## [1.1.1] - 2024-04-16 -#### Corrigido +### Corrigido - Cria lógica de deduplicação na tabela `sppo_registro_agente_verao` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/271) ## [1.1.0] - 2024-04-15 -#### Alterado +### Alterado - Reorganizar modelos intermediários de licenciamento em staging (https://github.com/prefeitura-rio/queries-rj-smtr/pull/255) - Atualiza schema para refletir as alterações (https://github.com/prefeitura-rio/queries-rj-smtr/pull/255) ## [1.0.2] - 2024-04-12 -#### Alterado +### Alterado - Fixa versão do STU em `2024-04-09` para mar/Q2 devido à falha de atualização na fonte da dados (SIURB) nos modelos `sppo_licenciamento.sql` e `sppo_veiculo_dia.sql` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/264) ## [1.0.1] - 2024-04-05 -#### Alterado +### Alterado - Altera a localização da verificação de validade da vistoria de `sppo_licenciamento` para `sppo_veiculo_dia` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/252) - Adiciona coluna `data_inicio_veiculo` na tabela `sppo_licenciamento` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/252) @@ -55,7 +64,7 @@ - Atualiza documentação de tabelas e colunas (https://github.com/prefeitura-rio/queries-rj-smtr/pull/239) - Alterações feitas em https://github.com/prefeitura-rio/queries-rj-smtr/pull/229 e https://github.com/prefeitura-rio/queries-rj-smtr/pull/236 corrigidas em https://github.com/prefeitura-rio/queries-rj-smtr/pull/239 -## Corrigido +### Corrigido - Corrige versão dos dados de licenciamento do STU a partir de 01/03/24 na tabela `sppo_licenciamento` (https://github.com/prefeitura-rio/queries-rj-smtr/pull/239) From 60ec9e741a560b47224335f1d36221f981abcc90 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Tue, 7 Jan 2025 17:33:55 -0300 Subject: [PATCH 22/30] adiciona coluna tecnologia em sppo_veiculo_dia --- queries/models/sources.yml | 4 +-- queries/models/veiculo/sppo_veiculo_dia.sql | 25 ++++++++++++++----- .../veiculo/staging/infracao_staging.sql | 2 +- .../staging/licenciamento_stu_staging.sql | 2 +- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/queries/models/sources.yml b/queries/models/sources.yml index b1d04448..e61c4af1 100644 --- a/queries/models/sources.yml +++ b/queries/models/sources.yml @@ -110,10 +110,10 @@ sources: - name: sppo_vistoria_tr_subtt_cglf_2024 - name: sppo_vistoria_tr_subtt_cglf_pendentes_2024 - name: sppo_registro_agente_verao - - name: infracao + - name: sppo_infracao - name: sppo_licenciamento_solicitacao - name: sppo_licenciamento - - name: licenciamento_stu + - name: sppo_licenciamento_stu - name: dashboard_subsidio_sppo_staging database: rj-smtr-staging diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index 9571db2f..ef9705a0 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -1,4 +1,5 @@ -- depends_on: {{ ref('licenciamento_stu_staging') }} +-- depends_on: {{ ref("infracao") }} {{ config( materialized="incremental", @@ -18,6 +19,14 @@ WITH licenciamento AS ( id_veiculo, placa, tipo_veiculo, + CASE + WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" + WHEN tipo_veiculo LIKE "%MIDI%" THEN "MIDI" + WHEN tipo_veiculo LIKE "%MINI%" THEN "MINI" + WHEN tipo_veiculo LIKE "%PDRON%" OR tipo_veiculo LIKE "%PADRON%" THEN "PADRON" + WHEN tipo_veiculo LIKE "%ARTICULADO%" THEN "ARTICULADO" + ELSE NULL + END AS tecnologia, indicador_ar_condicionado, TRUE AS indicador_licenciado, CASE @@ -37,8 +46,8 @@ gps AS ( DISTINCT data, id_veiculo FROM - -- {{ ref("gps_sppo") }} - `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` + {{ ref("gps_sppo") }} + -- `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` WHERE data = DATE("{{ var('run_date') }}") ), autuacoes AS ( @@ -47,10 +56,11 @@ gps AS ( placa, id_infracao FROM - {{ ref("sppo_infracao") }} + {{ ref("sppo_infracao") }} + --`rj-smtr.veiculo.sppo_infracao` WHERE {%- if execute %} - {% set infracao_date = run_query("SELECT MIN(data) FROM " ~ ref("sppo_infracao") ~ " WHERE data >= DATE_ADD(DATE('" ~ var("run_date") ~ "'), INTERVAL 7 DAY)").columns[0].values()[0] %} + {% set infracao_date = run_query("SELECT MIN(data) FROM " ~ ref("infracao") ~ " WHERE data >= DATE_ADD(DATE('" ~ var("run_date") ~ "'), INTERVAL 7 DAY)").columns[0].values()[0] %} {% endif -%} data = DATE("{{ infracao_date }}") AND data_infracao = DATE("{{ var('run_date') }}") @@ -62,6 +72,7 @@ registros_agente_verao AS ( TRUE AS indicador_registro_agente_verao_ar_condicionado FROM {{ ref("sppo_registro_agente_verao") }} + -- `rj-smtr.veiculo.sppo_registro_agente_verao` WHERE data = DATE("{{ var('run_date') }}") ), @@ -199,7 +210,8 @@ gps_licenciamento_autuacao AS ( COALESCE(r.indicador_registro_agente_verao_ar_condicionado, FALSE) AS indicador_registro_agente_verao_ar_condicionado) {% endif %} AS indicadores, - l.placa + l.placa, + tecnologia FROM gps g LEFT JOIN @@ -224,7 +236,8 @@ SELECT FROM gps_licenciamento_autuacao AS gla LEFT JOIN - {{ ref("subsidio_parametros") }} AS p --`rj-smtr.dashboard_subsidio_sppo.subsidio_parametros` + {{ ref("subsidio_parametros") }} AS p + -- `rj-smtr.dashboard_subsidio_sppo.subsidio_parametros` AS p ON gla.indicadores.indicador_licenciado = p.indicador_licenciado AND gla.indicadores.indicador_ar_condicionado = p.indicador_ar_condicionado diff --git a/queries/models/veiculo/staging/infracao_staging.sql b/queries/models/veiculo/staging/infracao_staging.sql index 8ff42ab9..a84054fc 100644 --- a/queries/models/veiculo/staging/infracao_staging.sql +++ b/queries/models/veiculo/staging/infracao_staging.sql @@ -21,5 +21,5 @@ SELECT IF(JSON_VALUE(content,'$.data_pagamento') = "", NULL, PARSE_DATE("%d/%m/%Y", JSON_VALUE(content,'$.data_pagamento'))) data_pagamento, SAFE_CAST(DATETIME(TIMESTAMP_TRUNC(TIMESTAMP(timestamp_captura), SECOND), "America/Sao_Paulo" ) AS DATETIME) timestamp_captura FROM - {{ source('veiculo_staging','infracao') }} as t + {{ source('veiculo_staging','sppo_infracao') }} as t diff --git a/queries/models/veiculo/staging/licenciamento_stu_staging.sql b/queries/models/veiculo/staging/licenciamento_stu_staging.sql index f7336564..72526166 100644 --- a/queries/models/veiculo/staging/licenciamento_stu_staging.sql +++ b/queries/models/veiculo/staging/licenciamento_stu_staging.sql @@ -43,4 +43,4 @@ SELECT SAFE_CAST(PARSE_DATETIME("%d/%m/%Y", JSON_VALUE(content,"$.data_inicio_vinculo")) AS DATE) END AS data_inicio_vinculo, FROM - {{ source('veiculo_staging','licenciamento_stu') }} as t \ No newline at end of file + {{ source('veiculo_staging','sppo_licenciamento_stu') }} as t \ No newline at end of file From 61aa4a913d99ed41e57236d464c808b9d3001666 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 12:24:55 +0000 Subject: [PATCH 23/30] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- queries/models/veiculo/sppo_veiculo_dia.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index ef9705a0..75e74470 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -20,7 +20,7 @@ WITH licenciamento AS ( placa, tipo_veiculo, CASE - WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" + WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" WHEN tipo_veiculo LIKE "%MIDI%" THEN "MIDI" WHEN tipo_veiculo LIKE "%MINI%" THEN "MINI" WHEN tipo_veiculo LIKE "%PDRON%" OR tipo_veiculo LIKE "%PADRON%" THEN "PADRON" @@ -236,8 +236,8 @@ SELECT FROM gps_licenciamento_autuacao AS gla LEFT JOIN - {{ ref("subsidio_parametros") }} AS p - -- `rj-smtr.dashboard_subsidio_sppo.subsidio_parametros` AS p + {{ ref("subsidio_parametros") }} AS p + -- `rj-smtr.dashboard_subsidio_sppo.subsidio_parametros` AS p ON gla.indicadores.indicador_licenciado = p.indicador_licenciado AND gla.indicadores.indicador_ar_condicionado = p.indicador_ar_condicionado From 4896ee1ad2a6b512380134fc2d073da52b73646b Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 16 Jan 2025 15:20:16 -0300 Subject: [PATCH 24/30] =?UTF-8?q?corre=C3=A7=C3=B5es=20na=20documenta?= =?UTF-8?q?=C3=A7=C3=A3o=20e=20na=20coluna=20tecnologia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- queries/dbt_project.yml | 2 ++ queries/models/veiculo/CHANGELOG.md | 2 +- queries/models/veiculo/licenciamento.sql | 8 +++++ queries/models/veiculo/schema.yml | 9 +++-- queries/models/veiculo/sppo_licenciamento.sql | 3 +- queries/models/veiculo/sppo_veiculo_dia.sql | 35 ++++++++++--------- queries/models/veiculo/staging/schema.yml | 4 +-- 7 files changed, 40 insertions(+), 23 deletions(-) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index ed8796ff..2e7aafc9 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -114,6 +114,8 @@ vars: DATA_SUBSIDIO_V3_INICIO: "2023-07-04" # Feature viagens remuneradas (RESOLUÇÃO SMTR Nº 3645/2023) DATA_SUBSIDIO_V3A_INICIO: "2023-09-16" + # Inclusão de colunas de tecnologia em sppo_veiculo_dia + DATA_SUBSIDIO_V3B_INICIO: "2024-01-01" # Feature penalidade aplicada por agente de verão (DECRETO RIO 53856/2023 e RESOLUÇÃO SMTR 3682/2024) DATA_SUBSIDIO_V4_INICIO: "2024-01-04" # Feature penalidade de vistoria (RESOLUÇÃO SMTR 3683/2024) diff --git a/queries/models/veiculo/CHANGELOG.md b/queries/models/veiculo/CHANGELOG.md index 93a1b6da..5d7168f4 100644 --- a/queries/models/veiculo/CHANGELOG.md +++ b/queries/models/veiculo/CHANGELOG.md @@ -7,7 +7,7 @@ ### Alterado - Altera tipo dos modelos `sppo_infracao.sql` e `sppo_licenciamento.sql` para `ephemeral` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) -- Adiciona colunas `placa`, `data_licenciamento`, `data_infracao` e `datetime_ultima_atualizacao` no modelo `sppo_veiculo_dia.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) +- Adiciona colunas `tecnologia`,`placa`, `data_licenciamento`, `data_infracao` e `datetime_ultima_atualizacao` no modelo `sppo_veiculo_dia.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) ## [1.1.4] - 2024-11-13 diff --git a/queries/models/veiculo/licenciamento.sql b/queries/models/veiculo/licenciamento.sql index a006d279..4c0fecb3 100644 --- a/queries/models/veiculo/licenciamento.sql +++ b/queries/models/veiculo/licenciamento.sql @@ -72,6 +72,14 @@ SELECT nome_chassi, permissao, placa, + CASE + WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" + WHEN tipo_veiculo LIKE "%MIDI%" THEN "MIDI" + WHEN tipo_veiculo LIKE "%MINI%" THEN "MINI" + WHEN tipo_veiculo LIKE "%PDRON%" OR tipo_veiculo LIKE "%PADRON%" THEN "PADRON" + WHEN tipo_veiculo LIKE "%ARTICULADO%" THEN "ARTICULADO" + ELSE NULL + END AS tecnologia, quantidade_lotacao_pe, quantidade_lotacao_sentado, tipo_combustivel, diff --git a/queries/models/veiculo/schema.yml b/queries/models/veiculo/schema.yml index 8d64841a..c258c4e0 100644 --- a/queries/models/veiculo/schema.yml +++ b/queries/models/veiculo/schema.yml @@ -39,14 +39,14 @@ models: - name: versao description: "SHA do repositório no Github" - name: licenciamento - description: "Tabela histórica de dados cadastrais dos veículos que operam o sistema de ônibus (BRT e SPPO), + description: "Tabela histórica de dados cadastrais dos veículos que operam o sistema de transporte rodoviário, considerando tanto os licenciados no Sistema de Transporte Urbano (STU) quanto as solicitações válidas em andamento para ingresso no sistema" columns: - name: data description: "Data da captura (partição)" - name: modo - description: "ÔNIBUS – nesse arquivo só constam os ônibus" + description: "Modo de operação do veiculo (Ônibus, BRT, Etc...)" - name: id_veiculo description: "Número de ordem do veículo, identificação que é exibida na lateral do ônibus" - name: ano_fabricacao @@ -201,9 +201,14 @@ models: description: "Data do arquivo de licenciamento utilizado" - name: data_infracao description: "Data do arquivo de infrações utilizado" +<<<<<<< Updated upstream tests: - not_null: name: not_null__status__sppo_veiculo_dia +======= + - name: tecnologia + description: "Tecnologia utilizada no veiculo (BASICO, MIDI, MINI, PADRON, ARTICULADO)" +>>>>>>> Stashed changes - name: versao description: "SHA do repositório no Github" - name: sppo_registro_agente_verao diff --git a/queries/models/veiculo/sppo_licenciamento.sql b/queries/models/veiculo/sppo_licenciamento.sql index 28a8715d..90cc4f4c 100644 --- a/queries/models/veiculo/sppo_licenciamento.sql +++ b/queries/models/veiculo/sppo_licenciamento.sql @@ -9,4 +9,5 @@ SELECT FROM {{ ref("licenciamento") }} WHERE - tipo_veiculo NOT LIKE "%ROD%" \ No newline at end of file + tipo_veiculo NOT LIKE "%ROD%" + and modo ='Ônibus' \ No newline at end of file diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index 75e74470..404442a7 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -19,14 +19,7 @@ WITH licenciamento AS ( id_veiculo, placa, tipo_veiculo, - CASE - WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" - WHEN tipo_veiculo LIKE "%MIDI%" THEN "MIDI" - WHEN tipo_veiculo LIKE "%MINI%" THEN "MINI" - WHEN tipo_veiculo LIKE "%PDRON%" OR tipo_veiculo LIKE "%PADRON%" THEN "PADRON" - WHEN tipo_veiculo LIKE "%ARTICULADO%" THEN "ARTICULADO" - ELSE NULL - END AS tecnologia, + tecnologia, indicador_ar_condicionado, TRUE AS indicador_licenciado, CASE @@ -37,7 +30,7 @@ WITH licenciamento AS ( END AS indicador_vistoriado, data_inicio_vinculo FROM - {{ ref("sppo_licenciamento") }} --`rj-smtr`.`veiculo`.`licenciamento` + {{ ref("sppo_licenciamento") }} WHERE data = DATE("{{ licenciamento_date }}") ), @@ -226,12 +219,16 @@ gps_licenciamento_autuacao AS ( ) {% if var("run_date") < var("DATA_SUBSIDIO_V5_INICIO") %} SELECT - gla.* EXCEPT(indicadores), + gla.* EXCEPT(indicadores, tecnologia, placa), TO_JSON(indicadores) AS indicadores, status, - DATE("{{ licenciamento_date }}") AS data_licenciamento, - DATE("{{ infracao_date }}") AS data_infracao, - CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + {% if var("run_date") >= var("DATA_SUBSIDIO_V3B_INICIO") %} + tecnologia, + placa, + DATE("{{ licenciamento_date }}") AS data_licenciamento, + DATE("{{ infracao_date }}") AS data_infracao, + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + {% endif %} "{{ var("version") }}" AS versao FROM gps_licenciamento_autuacao AS gla @@ -249,7 +246,7 @@ ON AND (data BETWEEN p.data_inicio AND p.data_fim) {% else %} SELECT - * EXCEPT(indicadores), + * EXCEPT(indicadores, tecnologia, placa), TO_JSON(indicadores) AS indicadores, CASE WHEN indicadores.indicador_licenciado IS FALSE THEN "Não licenciado" @@ -262,9 +259,13 @@ SELECT WHEN indicadores.indicador_ar_condicionado IS TRUE THEN "Licenciado com ar e não autuado" ELSE NULL END AS status, - DATE("{{ licenciamento_date }}") AS data_licenciamento, - DATE("{{ infracao_date }}") AS data_infracao, - CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + {% if var("run_date") >= var("DATA_SUBSIDIO_V3B_INICIO") %} + tecnologia, + placa, + DATE("{{ licenciamento_date }}") AS data_licenciamento, + DATE("{{ infracao_date }}") AS data_infracao, + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + {% endif %} "{{ var("version") }}" AS versao FROM gps_licenciamento_autuacao diff --git a/queries/models/veiculo/staging/schema.yml b/queries/models/veiculo/staging/schema.yml index 1aa553e6..4a21f06f 100644 --- a/queries/models/veiculo/staging/schema.yml +++ b/queries/models/veiculo/staging/schema.yml @@ -59,7 +59,7 @@ models: - name: ano_ultima_vistoria description: "Ano da última vistoria realizada pelo veículo" - name: licenciamento_stu_staging - description: "View de Dados cadastrais dos veículos que operam o sistema de ônibus (BRT e SPPO) no município do Rio de Janeiro.\n + description: "View de Dados cadastrais dos veículos que operam o sistema de transporte rodoviário no município do Rio de Janeiro.\n Dados capturados diariamente de: https://www.data.rio/documents/c6c97d3c15434b5088965e25f85e27c3" columns: - name: data @@ -67,7 +67,7 @@ models: - name: timestamp_captura description: "Timestamp de captura dos dados de licenciamento" - name: modo - description: "ÔNIBUS – nesse arquivo só constam os ônibus" + description: "Modo de operação do veiculo (Ônibus, BRT, Etc...)" - name: id_veiculo description: "Número de ordem do veículo, identificação que é exibida na lateral do ônibus" - name: ano_fabricacao From 7c3fd4c88e994d5beae10c1c94a99edd7fbea32f 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:20:36 +0000 Subject: [PATCH 25/30] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- queries/dbt_project.yml | 2 +- queries/models/veiculo/licenciamento.sql | 2 +- queries/models/veiculo/sppo_veiculo_dia.sql | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index 2e7aafc9..f2195d96 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -114,7 +114,7 @@ vars: DATA_SUBSIDIO_V3_INICIO: "2023-07-04" # Feature viagens remuneradas (RESOLUÇÃO SMTR Nº 3645/2023) DATA_SUBSIDIO_V3A_INICIO: "2023-09-16" - # Inclusão de colunas de tecnologia em sppo_veiculo_dia + # Inclusão de colunas de tecnologia em sppo_veiculo_dia DATA_SUBSIDIO_V3B_INICIO: "2024-01-01" # Feature penalidade aplicada por agente de verão (DECRETO RIO 53856/2023 e RESOLUÇÃO SMTR 3682/2024) DATA_SUBSIDIO_V4_INICIO: "2024-01-04" diff --git a/queries/models/veiculo/licenciamento.sql b/queries/models/veiculo/licenciamento.sql index 4c0fecb3..8f17568e 100644 --- a/queries/models/veiculo/licenciamento.sql +++ b/queries/models/veiculo/licenciamento.sql @@ -73,7 +73,7 @@ SELECT permissao, placa, CASE - WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" + WHEN tipo_veiculo LIKE "%BASIC%" OR tipo_veiculo LIKE "%BS%" THEN "BASICO" WHEN tipo_veiculo LIKE "%MIDI%" THEN "MIDI" WHEN tipo_veiculo LIKE "%MINI%" THEN "MINI" WHEN tipo_veiculo LIKE "%PDRON%" OR tipo_veiculo LIKE "%PADRON%" THEN "PADRON" diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index 404442a7..cfb60c7a 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -223,7 +223,7 @@ SELECT TO_JSON(indicadores) AS indicadores, status, {% if var("run_date") >= var("DATA_SUBSIDIO_V3B_INICIO") %} - tecnologia, + tecnologia, placa, DATE("{{ licenciamento_date }}") AS data_licenciamento, DATE("{{ infracao_date }}") AS data_infracao, @@ -260,7 +260,7 @@ SELECT ELSE NULL END AS status, {% if var("run_date") >= var("DATA_SUBSIDIO_V3B_INICIO") %} - tecnologia, + tecnologia, placa, DATE("{{ licenciamento_date }}") AS data_licenciamento, DATE("{{ infracao_date }}") AS data_infracao, From 315fca68d8195ea4e1d7df8f9ea914387da5ea8c Mon Sep 17 00:00:00 2001 From: Rodrigo Cunha <66736583+eng-rodrigocunha@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:30:45 -0300 Subject: [PATCH 26/30] Apply suggestions from code review --- pipelines/migration/veiculo/CHANGELOG.md | 2 +- queries/models/veiculo/CHANGELOG.md | 2 +- queries/models/veiculo/schema.yml | 2 +- queries/models/veiculo/staging/schema.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pipelines/migration/veiculo/CHANGELOG.md b/pipelines/migration/veiculo/CHANGELOG.md index fe91652b..430d047e 100644 --- a/pipelines/migration/veiculo/CHANGELOG.md +++ b/pipelines/migration/veiculo/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog - veiculo -## [1.1.0] - 2024-08-06 +## [1.1.0] - 2025-01-16 ### Alterado - Alterações no tratamento do arquivo de infrações (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126): diff --git a/queries/models/veiculo/CHANGELOG.md b/queries/models/veiculo/CHANGELOG.md index 5d7168f4..3a36671a 100644 --- a/queries/models/veiculo/CHANGELOG.md +++ b/queries/models/veiculo/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog - veiculo -## [2.0.0] - 2024-08-06 +## [2.0.0] - 2025-01-16 ### Adicionado - Criado os modelos `infracao.sql` e `licenciamento.sql` para guardar os dados completos de infração e licenciamento do STU (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) diff --git a/queries/models/veiculo/schema.yml b/queries/models/veiculo/schema.yml index c258c4e0..c3bd1f7e 100644 --- a/queries/models/veiculo/schema.yml +++ b/queries/models/veiculo/schema.yml @@ -46,7 +46,7 @@ models: - name: data description: "Data da captura (partição)" - name: modo - description: "Modo de operação do veiculo (Ônibus, BRT, Etc...)" + description: "Modo de operação do veículo" - name: id_veiculo description: "Número de ordem do veículo, identificação que é exibida na lateral do ônibus" - name: ano_fabricacao diff --git a/queries/models/veiculo/staging/schema.yml b/queries/models/veiculo/staging/schema.yml index 4a21f06f..067c75e6 100644 --- a/queries/models/veiculo/staging/schema.yml +++ b/queries/models/veiculo/staging/schema.yml @@ -67,7 +67,7 @@ models: - name: timestamp_captura description: "Timestamp de captura dos dados de licenciamento" - name: modo - description: "Modo de operação do veiculo (Ônibus, BRT, Etc...)" + description: "Modo de operação do veiculo" - name: id_veiculo description: "Número de ordem do veículo, identificação que é exibida na lateral do ônibus" - name: ano_fabricacao From 636b8adbfa7c8dd30c324ac27fd3338636cd24ba Mon Sep 17 00:00:00 2001 From: Rodrigo Cunha <66736583+eng-rodrigocunha@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:36:21 -0300 Subject: [PATCH 27/30] Update queries/models/veiculo/sppo_licenciamento.sql --- queries/models/veiculo/sppo_licenciamento.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queries/models/veiculo/sppo_licenciamento.sql b/queries/models/veiculo/sppo_licenciamento.sql index 90cc4f4c..745f6bf9 100644 --- a/queries/models/veiculo/sppo_licenciamento.sql +++ b/queries/models/veiculo/sppo_licenciamento.sql @@ -10,4 +10,4 @@ FROM {{ ref("licenciamento") }} WHERE tipo_veiculo NOT LIKE "%ROD%" - and modo ='Ônibus' \ No newline at end of file + and modo = 'ONIBUS' \ No newline at end of file From aa7fb7bf73aea72a4f447fd278c4547da9c29165 Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 16 Jan 2025 15:52:32 -0300 Subject: [PATCH 28/30] corrige sppo_veiculo_dia --- queries/models/veiculo/schema.yml | 9 +++------ queries/models/veiculo/sppo_veiculo_dia.sql | 11 ++++++++--- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/queries/models/veiculo/schema.yml b/queries/models/veiculo/schema.yml index c3bd1f7e..298462e4 100644 --- a/queries/models/veiculo/schema.yml +++ b/queries/models/veiculo/schema.yml @@ -195,20 +195,17 @@ models: - Autuado por limpeza/equipamento - Veículo que operou, foi licenciado, mas foi autuado cumulativamente por infrações relacionadas à limpeza e equipamentos do veículo\n - Sem ar e não autuado - Veículo que operou, foi licenciado sem ar condicionado e não foi autuado\n - Com ar e não autuado - Veículo que operou, foi licenciado com ar condicionado e não foi autuado" + tests: + - not_null: + name: not_null__status__sppo_veiculo_dia - name: datetime_ultima_atualizacao description: "Última atualização (GMT-3)." - name: data_licenciamento description: "Data do arquivo de licenciamento utilizado" - name: data_infracao description: "Data do arquivo de infrações utilizado" -<<<<<<< Updated upstream - tests: - - not_null: - name: not_null__status__sppo_veiculo_dia -======= - name: tecnologia description: "Tecnologia utilizada no veiculo (BASICO, MIDI, MINI, PADRON, ARTICULADO)" ->>>>>>> Stashed changes - name: versao description: "SHA do repositório no Github" - name: sppo_registro_agente_verao diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index cfb60c7a..ee5c65af 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -39,8 +39,8 @@ gps AS ( DISTINCT data, id_veiculo FROM - {{ ref("gps_sppo") }} - -- `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` + -- {{ ref("gps_sppo") }} + `rj-smtr.br_rj_riodejaneiro_veiculos.gps_sppo` WHERE data = DATE("{{ var('run_date') }}") ), autuacoes AS ( @@ -264,8 +264,13 @@ SELECT placa, DATE("{{ licenciamento_date }}") AS data_licenciamento, DATE("{{ infracao_date }}") AS data_infracao, - CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + {% else %} + null as tecnologia, + null as placa, + null as data_licenciamento, + null as data_infracao, {% endif %} + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, "{{ var("version") }}" AS versao FROM gps_licenciamento_autuacao From c5b34c046b386603697c8b177578fa0b739edb8b Mon Sep 17 00:00:00 2001 From: vtr363 Date: Thu, 16 Jan 2025 15:55:44 -0300 Subject: [PATCH 29/30] corrige data de inicio da colunas de tecnologia em sppo_veiculo_dia --- queries/dbt_project.yml | 4 ++-- queries/models/veiculo/sppo_veiculo_dia.sql | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/queries/dbt_project.yml b/queries/dbt_project.yml index f2195d96..485d01f7 100644 --- a/queries/dbt_project.yml +++ b/queries/dbt_project.yml @@ -114,8 +114,6 @@ vars: DATA_SUBSIDIO_V3_INICIO: "2023-07-04" # Feature viagens remuneradas (RESOLUÇÃO SMTR Nº 3645/2023) DATA_SUBSIDIO_V3A_INICIO: "2023-09-16" - # Inclusão de colunas de tecnologia em sppo_veiculo_dia - DATA_SUBSIDIO_V3B_INICIO: "2024-01-01" # Feature penalidade aplicada por agente de verão (DECRETO RIO 53856/2023 e RESOLUÇÃO SMTR 3682/2024) DATA_SUBSIDIO_V4_INICIO: "2024-01-04" # Feature penalidade de vistoria (RESOLUÇÃO SMTR 3683/2024) @@ -134,6 +132,8 @@ vars: DATA_SUBSIDIO_V11_INICIO: "2024-11-06" # Parâmetro 110 km/h + alterações de regras do modelo `viagem_transacao.sql` DATA_SUBSIDIO_V12_INICIO: "2024-11-16" + # Inclusão de colunas de tecnologia em sppo_veiculo_dia + DATA_SUBSIDIO_V13_INICIO: "2025-01-01" # Recursos # recurso_staging: "rj-smtr-staging.projeto_subsidio_sppo_staging.recurso" diff --git a/queries/models/veiculo/sppo_veiculo_dia.sql b/queries/models/veiculo/sppo_veiculo_dia.sql index ee5c65af..8d79a511 100644 --- a/queries/models/veiculo/sppo_veiculo_dia.sql +++ b/queries/models/veiculo/sppo_veiculo_dia.sql @@ -222,13 +222,18 @@ SELECT gla.* EXCEPT(indicadores, tecnologia, placa), TO_JSON(indicadores) AS indicadores, status, - {% if var("run_date") >= var("DATA_SUBSIDIO_V3B_INICIO") %} + {% if var("run_date") >= var("DATA_SUBSIDIO_V13_INICIO") %} tecnologia, placa, DATE("{{ licenciamento_date }}") AS data_licenciamento, DATE("{{ infracao_date }}") AS data_infracao, - CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, + {% else %} + null as tecnologia, + null as placa, + null as data_licenciamento, + null as data_infracao, {% endif %} + CURRENT_DATETIME("America/Sao_Paulo") AS datetime_ultima_atualizacao, "{{ var("version") }}" AS versao FROM gps_licenciamento_autuacao AS gla @@ -259,7 +264,7 @@ SELECT WHEN indicadores.indicador_ar_condicionado IS TRUE THEN "Licenciado com ar e não autuado" ELSE NULL END AS status, - {% if var("run_date") >= var("DATA_SUBSIDIO_V3B_INICIO") %} + {% if var("run_date") >= var("DATA_SUBSIDIO_V13_INICIO") %} tecnologia, placa, DATE("{{ licenciamento_date }}") AS data_licenciamento, From 67b6b0954c5b524cb0e795a789f00855bd2a4ba4 Mon Sep 17 00:00:00 2001 From: Rodrigo Cunha <66736583+eng-rodrigocunha@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:19:16 -0300 Subject: [PATCH 30/30] Update queries/models/veiculo/CHANGELOG.md --- queries/models/veiculo/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/queries/models/veiculo/CHANGELOG.md b/queries/models/veiculo/CHANGELOG.md index 3a36671a..ae57816c 100644 --- a/queries/models/veiculo/CHANGELOG.md +++ b/queries/models/veiculo/CHANGELOG.md @@ -7,7 +7,7 @@ ### Alterado - Altera tipo dos modelos `sppo_infracao.sql` e `sppo_licenciamento.sql` para `ephemeral` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) -- Adiciona colunas `tecnologia`,`placa`, `data_licenciamento`, `data_infracao` e `datetime_ultima_atualizacao` no modelo `sppo_veiculo_dia.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) +- Adiciona colunas `tecnologia`, `placa`, `data_licenciamento`, `data_infracao` e `datetime_ultima_atualizacao` no modelo `sppo_veiculo_dia.sql` (https://github.com/prefeitura-rio/pipelines_rj_smtr/pull/126) ## [1.1.4] - 2024-11-13