From 64d7aa80301aa59df5b83c677e8269a69ae2e2c7 Mon Sep 17 00:00:00 2001 From: folhesgabriel Date: Fri, 15 Dec 2023 15:48:31 -0300 Subject: [PATCH 1/3] feat: add br_denatran_frota models --- .../br_denatran_frota__municipio_tipo.sql | 89 +++++++++++++++++++ .../br_denatran_frota__uf_tipo.sql | 54 +++++++++++ models/br_denatran_frota/schema.yml | 82 +++++++++++++++++ 3 files changed, 225 insertions(+) create mode 100644 models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql create mode 100644 models/br_denatran_frota/br_denatran_frota__uf_tipo.sql create mode 100644 models/br_denatran_frota/schema.yml diff --git a/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql b/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql new file mode 100644 index 00000000..d5d3fbb7 --- /dev/null +++ b/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql @@ -0,0 +1,89 @@ +{{ +config( + alias='municipio_tipo', + schema='br_denatran_frota', + materialization='incremental', + partition_by={ + "field": "ano", + "data_type": "int64", + "range": { + "start": 2003, + "end": 2024, + "interval": 1}}, + cluster_by = ["mes", "sigla_uf"] +) + +}} + + +with tipo_mun as ( +SELECT + ano, + mes, + sigla_uf, + id_municipio, + CASE + WHEN tipo_veiculo = 'AUTOMÓVEL' THEN 'AUTOMOVEL' + WHEN tipo_veiculo = 'CAMINHÃO' THEN 'CAMINHAO' + WHEN tipo_veiculo = 'CAMINHÃO TRATOR' THEN 'CAMINHAO TRATOR' + WHEN tipo_veiculo = 'CHASSI PLATAFAFORMA' THEN 'CHASSI PLATAFORMA' + WHEN tipo_veiculo = 'CHASSI PLATAF' THEN 'CHASSI PLATAFORMA' + WHEN tipo_veiculo = 'MICRO-ÔNIBUS' THEN 'MICRO-ONIBUS' + WHEN tipo_veiculo = 'MICROÔNIBUS' THEN 'MICRO-ONIBUS' + WHEN tipo_veiculo = 'ÔNIBUS' THEN 'ONIBUS' + WHEN tipo_veiculo = 'UTILITÁRIO' THEN 'UTILITARIO' + WHEN tipo_veiculo = 'nan' THEN '' + WHEN tipo_veiculo = 'TRATOR ESTEI' THEN 'TRATOR ESTEIRA' + ELSE tipo_veiculo + END as tipo_veiculo2, + CAST(quantidade as INT64) quantidade +FROM basedosdados-staging.br_denatran_frota_staging.municipio_tipo +WHERE tipo_veiculo NOT IN ( + 'id_microrregiao', + 'id_mesorregiao', + 'id_regiao_imediata', + 'nome_mesorregiao', + 'amazonia_legal' , + 'nome_regiao_metropolitana' , + 'nome_uf' , + 'id_municipio_bcb' , + 'id_regiao_metropolitana' , + 'id_regiao_intermediaria' , + 'id_municipio_tse' , + 'nome_regiao' , + 'nome_regiao_intermediaria' , + 'id_comarca' , + 'nome_regiao_saude' , + 'id_regiao_intermediaria' , + 'id_regiao_saude' , + 'capital_uf' , + 'id_uf' , + 'ddd' , + 'id_municipio_rf' , + 'id_municipio_6' , + 'centroide' , + 'nome_microrregiao' , + 'nome_regiao_imediata' + ) +), nova_agregacao as ( +SELECT +ano, +mes, +sigla_uf, +id_municipio, +tipo_veiculo2 as tipo_veiculo, +SUM(quantidade) as quantidade +FROM tipo_mun +GROUP BY 1,2,3,4,5 +) +SELECT + SAFE_CAST(ano as INT64) ano, + SAFE_CAST(mes as INT64) mes, + SAFE_CAST(sigla_uf as STRING) sigla_uf, + SAFE_CAST(id_municipio as STRING) id_municipio, + SAFE_CAST(tipo_veiculo as STRING) tipo_veiculo, + SAFE_CAST(quantidade as INT64) quantidade +FROM nova_agregacao +{% if is_incremental() %} +WHERE DATE(CAST(ano AS INT64),CAST(mes AS INT64),1) > (SELECT MAX(DATE(CAST(ano AS INT64),CAST(mes AS INT64),1)) FROM {{ this }} ) +{% endif %} \ No newline at end of file diff --git a/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql b/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql new file mode 100644 index 00000000..23507681 --- /dev/null +++ b/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql @@ -0,0 +1,54 @@ +{{ +config( + alias='uf_tipo', + schema='br_denatran_frota', + partition_by={ + "field": "ano", + "data_type": "int64", + "range": { + "start": 2003, + "end": 2024, + "interval": 1}} +) +}} + + +with tipo_mun as ( +SELECT + ano, + mes, + sigla_uf, + CASE + WHEN tipo_veiculo = 'AUTOMÓVEL' THEN 'AUTOMOVEL' + WHEN tipo_veiculo = 'CAMINHÃO' THEN 'CAMINHAO' + WHEN tipo_veiculo = 'CAMINHÃO TRATOR' THEN 'CAMINHAO TRATOR' + WHEN tipo_veiculo = 'CHASSI PLATAFAFORMA' THEN 'CHASSI PLATAFORMA' + WHEN tipo_veiculo = 'CHASSI PLATAF' THEN 'CHASSI PLATAFORMA' + WHEN tipo_veiculo = 'MICRO-ÔNIBUS' THEN 'MICRO-ONIBUS' + WHEN tipo_veiculo = 'MICROÔNIBUS' THEN 'MICRO-ONIBUS' + WHEN tipo_veiculo = 'ÔNIBUS' THEN 'ONIBUS' + WHEN tipo_veiculo = 'UTILITÁRIO' THEN 'UTILITARIO' + WHEN tipo_veiculo = 'nan' THEN '' + WHEN tipo_veiculo = 'TRATOR ESTEI' THEN 'TRATOR ESTEIRA' + ELSE tipo_veiculo + END as tipo_veiculo2, + CAST(REPLACE(quantidade, '.0', '') as INT64) quantidade +FROM basedosdados-staging.br_denatran_frota_staging.uf_tipo +), +nova_agregacao as ( +SELECT +ano, +mes, +sigla_uf, +tipo_veiculo2 as tipo_veiculo, +SUM(quantidade) as quantidade +FROM tipo_mun +GROUP BY 1,2,3,4 +) +SELECT + SAFE_CAST(ano as INT64) ano, + SAFE_CAST(mes as INT64) mes, + SAFE_CAST(sigla_uf as STRING) sigla_uf, + SAFE_CAST(tipo_veiculo as STRING) tipo_veiculo, + SAFE_CAST(quantidade as INT64) quantidade +FROM nova_agregacao \ No newline at end of file diff --git a/models/br_denatran_frota/schema.yml b/models/br_denatran_frota/schema.yml new file mode 100644 index 00000000..15d6ffe9 --- /dev/null +++ b/models/br_denatran_frota/schema.yml @@ -0,0 +1,82 @@ +version: 2 + +models: + - name: br_denatran_frota__municipio_tipo + description: Frota de veículos por município e tipo + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - ano + - mes + - id_municipio + - tipo_veiculo + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: ano + - name: mes + description: Mês + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: mes + - name: id_municipio + description: ID Município - IBGE 7 Dígitos + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - dbt_utils.not_null_proportion: + at_least: 0.05 + - name: sigla_uf + description: Sigla da Unidade da Federação + - name: tipo_veiculo + description: Tipo de veículo + tests: + - dbt_utils.not_null_proportion: + at_least: 0.05 + - name: quantidade + description: Quantidade de veículos + tests: + - dbt_utils.not_null_proportion: + at_least: 0.05 + - name: br_denatran_frota__uf_tipo + description: Frota de veículos por Unidade da Federação (UF) e tipo + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - ano + - mes + - sigla_uf + - tipo_veiculo + columns: + - name: ano + description: Ano + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: ano + - name: mes + description: Mês + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: mes + - name: sigla_uf + description: Sigla da Unidade da Federação + tests: + - dbt_utils.not_null_proportion: + at_least: 0.05 + - name: tipo_veiculo + description: Tipo de veículo + tests: + - dbt_utils.not_null_proportion: + at_least: 0.05 + - name: quantidade + description: Quantidade de veículos + tests: + - dbt_utils.not_null_proportion: + at_least: 0.05 \ No newline at end of file From 9c93c13d03ecff0d5db598d2de7115797cdfd4c4 Mon Sep 17 00:00:00 2001 From: folhesgabriel Date: Fri, 26 Jan 2024 09:36:34 -0300 Subject: [PATCH 2/3] feat: set prod zode --- models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql | 2 +- models/br_denatran_frota/br_denatran_frota__uf_tipo.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql b/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql index cb7384f6..2311e6cc 100644 --- a/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql +++ b/models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql @@ -36,7 +36,7 @@ SELECT ELSE tipo_veiculo END as tipo_veiculo2, quantidade - FROM basedosdados-dev.br_denatran_frota_staging.municipio_tipo + FROM basedosdados-staging.br_denatran_frota_staging.municipio_tipo ) SELECT diff --git a/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql b/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql index 6c360a24..8fccfa93 100644 --- a/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql +++ b/models/br_denatran_frota/br_denatran_frota__uf_tipo.sql @@ -36,7 +36,7 @@ SELECT ELSE tipo_veiculo END as tipo_veiculo2, quantidade -FROM basedosdados-dev.br_denatran_frota_staging.uf_tipo +FROM basedosdados-staging.br_denatran_frota_staging.uf_tipo ) SELECT From 2b74bea59126debb4eace4232d418a4b5a80e357 Mon Sep 17 00:00:00 2001 From: folhesgabriel Date: Fri, 26 Jan 2024 09:41:44 -0300 Subject: [PATCH 3/3] fix: insert br_denatran_frota in dbt_project.yml --- dbt_project.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dbt_project.yml b/dbt_project.yml index 5b517190..aabfa32a 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -132,7 +132,10 @@ models: +schema: br_cvm_oferta_publica_distribuicao br_datahackers_state_data: +materialized: table - +schema: br_datahackers_state_data + +schema: br_datahackers_state_data + br_denatran_frota: + +materialized: table + +schema: br_denatran_frota br_fbsp_absp: +materialized: table +schema: br_fbsp_absp