From 237488ccdd1bb46f74d7b83e71033509aef99ac1 Mon Sep 17 00:00:00 2001 From: uiro-bi Date: Thu, 1 Aug 2024 11:59:14 -0300 Subject: [PATCH] feat: add br_rf_cno models --- dbt_project.yml | 3 + models/br_rf_cno/br_rf_cno__areas.sql | 12 ++ models/br_rf_cno/br_rf_cno__cnaes.sql | 7 + models/br_rf_cno/br_rf_cno__dicionario.sql | 8 + models/br_rf_cno/br_rf_cno__microdados.sql | 35 ++++ models/br_rf_cno/br_rf_cno__vinculos.sql | 14 ++ models/br_rf_cno/schema.yml | 222 +++++++++++++++++++++ 7 files changed, 301 insertions(+) create mode 100644 models/br_rf_cno/br_rf_cno__areas.sql create mode 100644 models/br_rf_cno/br_rf_cno__cnaes.sql create mode 100644 models/br_rf_cno/br_rf_cno__dicionario.sql create mode 100644 models/br_rf_cno/br_rf_cno__microdados.sql create mode 100644 models/br_rf_cno/br_rf_cno__vinculos.sql create mode 100644 models/br_rf_cno/schema.yml diff --git a/dbt_project.yml b/dbt_project.yml index ad2be417..d733b09a 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -315,6 +315,9 @@ models: br_rf_cafir: +materialized: table +schema: br_rf_cafir + br_rf_cno: + +materialized: table + +schema: br_rf_cno br_rj_isp_estatisticas_seguranca: +materialized: table +schema: br_rj_isp_estatisticas_seguranca diff --git a/models/br_rf_cno/br_rf_cno__areas.sql b/models/br_rf_cno/br_rf_cno__areas.sql new file mode 100644 index 00000000..87de0769 --- /dev/null +++ b/models/br_rf_cno/br_rf_cno__areas.sql @@ -0,0 +1,12 @@ +{{ config(alias="areas", schema="br_rf_cno", materialized="table") }} + +select + safe_cast(data as date) data_extracao, + safe_cast(id_cno as string) id_cno, + safe_cast(categoria as string) categoria, + safe_cast(destinacao as string) destinacao, + safe_cast(tipo_obra as string) tipo_obra, + safe_cast(tipo_area as string) tipo_area, + safe_cast(tipo_area_complementar as string) tipo_area_complementar, + safe_cast(metragem as float64) metragem, +from `basedosdados-staging.br_rf_cno_staging.areas` as t diff --git a/models/br_rf_cno/br_rf_cno__cnaes.sql b/models/br_rf_cno/br_rf_cno__cnaes.sql new file mode 100644 index 00000000..350894ed --- /dev/null +++ b/models/br_rf_cno/br_rf_cno__cnaes.sql @@ -0,0 +1,7 @@ +{{ config(alias="cnaes", schema="br_rf_cno", materialized="table") }} +select + safe_cast(data as date) data_extracao, + safe_cast(data_registro as date) data_registro, + safe_cast(id_cno as string) id_cno, + safe_cast(cnae_2_subclasse as string) cnae_2_subclasse, +from `basedosdados-staging.br_rf_cno_staging.cnaes` as t diff --git a/models/br_rf_cno/br_rf_cno__dicionario.sql b/models/br_rf_cno/br_rf_cno__dicionario.sql new file mode 100644 index 00000000..af35ffc2 --- /dev/null +++ b/models/br_rf_cno/br_rf_cno__dicionario.sql @@ -0,0 +1,8 @@ +{{ config(alias="dicionario", schema="br_rf_cno", materialized="table") }} +select + safe_cast(id_tabela as string) id_tabela, + safe_cast(nome_coluna as string) nome_coluna, + safe_cast(chave as string) chave, + safe_cast(cobertura_temporal as string) cobertura_temporal, + safe_cast(valor as string) valor, +from `basedosdados-staging.br_rf_cno_staging.dicionario` as t diff --git a/models/br_rf_cno/br_rf_cno__microdados.sql b/models/br_rf_cno/br_rf_cno__microdados.sql new file mode 100644 index 00000000..f3cbb306 --- /dev/null +++ b/models/br_rf_cno/br_rf_cno__microdados.sql @@ -0,0 +1,35 @@ +{{ config(alias="microdados", schema="br_rf_cno", materialized="table") }} + +select + safe_cast(data as date) data_extracao, + safe_cast(data_situacao as date) data_situacao, + safe_cast(data_registro as date) data_registro, + safe_cast(data_inicio as date) data_inicio, + safe_cast(data_inicio_responsabilidade as date) data_inicio_responsabilidade, + safe_cast(id_pais as string) id_pais, + safe_cast(nome_pais as string) nome_pais, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(b.id_municipio as string) id_municipio, + safe_cast(id_cno as string) id_cno, + safe_cast(id_cno_vinculado as string) id_cno_vinculado, + safe_cast(ltrim(situacao, '0') as string) situacao, + safe_cast(id_responsavel as string) id_responsavel, + safe_cast(nome_responsavel as string) nome_responsavel, + safe_cast(ltrim(qualificacao_responsavel, '0') as string) qualificacao_responsavel, + safe_cast(nome_empresarial as string) nome_empresarial, + safe_cast(area as float64) area, + safe_cast(unidade_medida as string) unidade_medida, + safe_cast(bairro as string) bairro, + safe_cast(cep as string) cep, + safe_cast(logradouro as string) logradouro, + safe_cast(tipo_logradouro as string) tipo_logradouro, + safe_cast(numero_logradouro as string) numero_logradouro, + safe_cast(complemento as string) complemento, + safe_cast(caixa_postal as string) caixa_postal, +from `basedosdados-dev.staging_staging.microdados` microdados +left join + ( + select id_municipio, id_municipio_rf + from `basedosdados.br_bd_diretorios_brasil.municipio` + ) b + on ltrim(microdados.id_municipio_rf, '0') = b.id_municipio_rf diff --git a/models/br_rf_cno/br_rf_cno__vinculos.sql b/models/br_rf_cno/br_rf_cno__vinculos.sql new file mode 100644 index 00000000..efdd44e4 --- /dev/null +++ b/models/br_rf_cno/br_rf_cno__vinculos.sql @@ -0,0 +1,14 @@ +{{ config(alias="vinculos", schema="br_rf_cno", materialized="table") }} + + +select + safe_cast(data as date) data_extracao, + safe_cast(data_registro as date) data_registro, + safe_cast(data_inicio as date) data_inicio, + safe_cast(data_fim as date) data_fim, + safe_cast(id_cno as string) id_cno, + safe_cast(id_responsavel as string) id_responsavel, + safe_cast( + ltrim(qualificacao_contribuinte, '0') as string + ) qualificacao_contribuinte, +from `basedosdados-staging.br_rf_cno_staging.vinculos` as t diff --git a/models/br_rf_cno/schema.yml b/models/br_rf_cno/schema.yml new file mode 100644 index 00000000..6d9b5b66 --- /dev/null +++ b/models/br_rf_cno/schema.yml @@ -0,0 +1,222 @@ +--- +version: 2 +models: + - name: br_rf_cno__vinculos + description: Esta tabela apresenta o cadastro de vínculos relacionados a uma determinada + obra. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [id_cno] + - custom_dictionary_coverage: + columns_covered_by_dictionary: [qualificacao_contribuinte] + dictionary_model: ref('br_rf_cno__dicionario') + columns: + - name: data_extracao + description: Data de extração dos dados na fonte original + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_registro + description: Data de registro da obra + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_inicio + description: Data de início do vínculo + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_fim + description: Data de fim do vínculo + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: id_cno + description: ID da obra no Cadastro Nacional de Obras (CNO) + - name: id_responsavel + description: ID (CNPJ/CPF) do responsável pela obra - se for CPF o campo + virá em branco. + - name: qualificacao_contribuinte + description: Qualificação do contribuinte + - name: br_rf_cno__areas + description: Esta tabela apresenta especificações da obra relacionada a uma determinada + obra. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [id_cno] + - custom_dictionary_coverage: + columns_covered_by_dictionary: + - categoria + - destinacao + - tipo_obra + - tipo_area + - tipo_area_complementar + dictionary_model: ref('br_rf_cno__dicionario') + columns: + - name: data_extracao + description: Data de extração dos dados na fonte original + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: id_cno + description: ID da obra no Cadastro Nacional de Obras (CNO) + - name: categoria + description: Categoria da obra + - name: destinacao + description: Destinação da obra + - name: tipo_obra + description: Tipo de Obra + - name: tipo_area + description: Tipo de Área + - name: tipo_area_complementar + description: Tipo de Área Complementar + - name: metragem + description: Metragem da Área + - name: br_rf_cno__cnaes + description: Esta tabela apresenta a subclasse do Código Nacional de Atividades + Econômicas (CNAE) relacionado a uma determinada obra. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [id_cno] + columns: + - name: data_extracao + description: Data de extração dos dados na fonte original + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_registro + description: Data de registro + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: id_cno + description: ID da obra no Cadastro Nacional de Obras (CNO) + - name: cnae_2_subclasse + description: Código de 7 dígitos da Subclasse da Classificação Nacional de + Atividades Econômicas (CNAE) + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__cnae_2') + field: subclasse + - name: br_rf_cno__microdados + description: Esta é a tabela cadastral básica do Cadastro Nacional de Obras (CNO). + Nela são informadas as informações básicas das obras registradas no CNO. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [id_cno] + - not_null_proportion_multiple_columns: + at_least: 0.95 + - custom_dictionary_coverage: + columns_covered_by_dictionary: [situacao, qualificacao_responsavel] + dictionary_model: ref('br_rf_cno__dicionario') + columns: + - name: data_extracao + description: Data de extração dos dados na fonte original + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_situacao + description: Data da situação da obra + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_registro + description: Data de registro + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_inicio + description: Data de início da obra + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_inicio_responsabilidade + description: Data de início do período de responsabilidade da obra + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: id_pais + description: ID País + - name: sigla_uf + description: Sigla da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: id_municipio + description: ID Município - IBGE 7 Dígitos + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__municipio') + field: id_municipio + - name: id_cno + description: ID da obra no Cadastro Nacional de Obras (CNO) + - name: id_cno_vinculado + description: ID de inscrição vinculada a obra no Cadastro Nacional de Obras + (CNO) + - name: situacao + description: Situação da obra + - name: id_responsavel + description: ID (CNPJ/CPF) do responsável pela obra - se for CPF o campo + virá em branco + - name: nome_responsavel + description: Nome do responsável + - name: qualificacao_responsavel + description: Qualificação do responsável + - name: nome_empresarial + description: Nome empresarial do responsável pela obra (Se responsável pessoa + física, o campo virá em branco) + - name: area + description: Valor da área total + - name: unidade_medida + description: Unidade de medida + - name: bairro + description: Bairro + - name: cep + description: Número do CEP + - name: logradouro + description: Logradouro + - name: tipo_logradouro + description: Tipo de logradouro + - name: numero_logradouro + description: Número do logradouro + - name: complemento + description: Complemento do endereço + - name: caixa_postal + description: Caixa postal no exterior + - name: br_rf_cno__dicionario + description: Dicionário para tradução dos códigos do conjunto br_ms_sisvan. Para + taduzir códigos compartilhados entre instituições, como id_municipio, buscar + por diretórios + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - id_tabela + - nome_coluna + - chave + - cobertura_temporal + - not_null_proportion_multiple_columns: + at_least: 0.95 + columns: + - name: id_tabela + description: ID Tabela + - name: nome_coluna + description: Nome da coluna + - name: chave + description: Chave + - name: cobertura_temporal + description: Cobertura Temporal + - name: valor + description: Valor