Skip to content

Commit

Permalink
Merge pull request #402 from basedosdados/staging/br_denatran_frota
Browse files Browse the repository at this point in the history
[dbt] br_denatran_frota
  • Loading branch information
folhesgabriel authored Jan 25, 2024
2 parents 873f7f5 + 0da76d7 commit 1e6187d
Show file tree
Hide file tree
Showing 3 changed files with 191 additions and 0 deletions.
52 changes: 52 additions & 0 deletions models/br_denatran_frota/br_denatran_frota__municipio_tipo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{{
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"]
)

}}

with tipo_municipio 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,
quantidade
FROM basedosdados-dev.br_denatran_frota_staging.municipio_tipo
)

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(LOWER(tipo_veiculo2) as STRING) tipo_veiculo,
SAFE_CAST(quantidade as INT64) quantidade
FROM tipo_municipio
{% 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 %}
48 changes: 48 additions & 0 deletions models/br_denatran_frota/br_denatran_frota__uf_tipo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{{
config(
alias='uf_tipo',
schema='br_denatran_frota',
materialization='table'
)
}}


with uf_tipo 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 = 'caminhaotrator' THEN 'caminhao trator'
WHEN tipo_veiculo = 'chassiplataforma' THEN 'chassi plataforma'
WHEN tipo_veiculo = 'moto cicleta' THEN 'motocicleta'
WHEN tipo_veiculo = 'moto cicleta' THEN 'motocicleta'
WHEN tipo_veiculo = 'MICRO-ÔNIBUS' THEN 'MICRO-ONIBUS'
WHEN tipo_veiculo = 'microonibus' THEN 'micro-onibus'
WHEN tipo_veiculo = 'sidecar' THEN 'side-car'
WHEN tipo_veiculo = 'semireboque' THEN 'semi-reboque'
WHEN tipo_veiculo = 'tratoresteira' THEN 'trator esteira'
WHEN tipo_veiculo = 'tratorrodas' THEN 'trator rodas'
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,
quantidade
FROM basedosdados-dev.br_denatran_frota_staging.uf_tipo
)

SELECT
SAFE_CAST(ano as INT64) ano,
SAFE_CAST(mes as INT64) mes,
SAFE_CAST(sigla_uf as STRING) sigla_uf,
SAFE_CAST(LOWER(tipo_veiculo2) as STRING) tipo_veiculo,
SAFE_CAST(quantidade as INT64) quantidade
FROM uf_tipo
91 changes: 91 additions & 0 deletions models/br_denatran_frota/schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
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
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__uf')
field: sigla
- 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
- 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:
- relationships:
to: ref('br_bd_diretorios_brasil__uf')
field: sigla
- 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

0 comments on commit 1e6187d

Please sign in to comment.