From 31ea16c1c9cc1df8f2a463c1b66015168d5aaa04 Mon Sep 17 00:00:00 2001 From: Luiz Eduardo Date: Mon, 21 Oct 2024 11:27:26 -0300 Subject: [PATCH] Adicionar microdados ao modelo br_tse_filiacao_partidaria --- ...br_tse_filiacao_partidaria__microdados.sql | 51 ++++++++++ models/br_tse_filiacao_partidaria/schema.yml | 97 ++++++++++++++++++- 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 models/br_tse_filiacao_partidaria/br_tse_filiacao_partidaria__microdados.sql diff --git a/models/br_tse_filiacao_partidaria/br_tse_filiacao_partidaria__microdados.sql b/models/br_tse_filiacao_partidaria/br_tse_filiacao_partidaria__microdados.sql new file mode 100644 index 00000000..32c0d22e --- /dev/null +++ b/models/br_tse_filiacao_partidaria/br_tse_filiacao_partidaria__microdados.sql @@ -0,0 +1,51 @@ +{{ + config( + schema="br_tse_filiacao_partidaria", + alias="microdados", + materialized="table", + unique_key="registro_filiacao", + partition_by={ + "field": "data_extracao", + "data_type": "date", + }, + cluster_by=["sigla_uf"], + ) +}} +with + tabela as ( + select + safe_cast(sqregistrofiliacao as string) registro_filiacao, + safe_cast(sgpartido as string) sigla_partido, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_municipio as string) id_municipio, + safe_cast(codlocalidadetse as string) id_municipio_tse, + safe_cast(numzona as string) zona, + safe_cast(numsecao as string) secao, + safe_cast(nrtituloeleitor as string) titulo_eleitor, + safe_cast(numcpf as string) cpf, + safe_cast(nmeleitor as string) nome, + safe_cast(nmsocialeleitor as string) nome_social, + safe_cast(tpsexo as string) sexo, + safe_cast(dessituacaoeleitor as string) situacao_registro, + safe_cast(cdmotivodesfiliacao as string) motivo_desfiliacao, + safe_cast(cdmotivocancelamento as string) motivo_cancelamento, + safe_cast(indorigem as string) indicador_origem, + safe_cast(dtfiliacao as date) data_filiacao, + safe_cast(dtdesfiliacao as date) data_desfiliacao, + safe_cast(tscadastrodesfiliacao as date) data_cadastro_desfiliacao, + safe_cast(dtcancelamento as date) data_cancelamento, + safe_cast(dtexclusao as date) data_exclusao, + safe_cast(data_extracao as date) data_extracao, + from `basedosdados-staging.br_tse_filiacao_partidaria_staging.microdados` + ), + select_rows as ( + select + *, + row_number() over ( + partition by registro_filiacao order by data_extracao desc + ) as rn + from tabela + ) +select * except (rn) +from select_rows +where rn = 1 diff --git a/models/br_tse_filiacao_partidaria/schema.yml b/models/br_tse_filiacao_partidaria/schema.yml index e19dec6a..0afb543e 100644 --- a/models/br_tse_filiacao_partidaria/schema.yml +++ b/models/br_tse_filiacao_partidaria/schema.yml @@ -2,7 +2,7 @@ version: 2 models: - name: br_tse_filiacao_partidaria__microdados_antigos - description: Microdados de filiação partidária do TSE. + description: Microdados antigos de filiação partidária do TSE. tests: - custom_not_null_proportion_multiple_columns: at_least: 0.10 @@ -69,3 +69,98 @@ models: field: data.data - name: motivo_cancelamento description: Motivo de cancelamento + - name: br_tse_filiacao_partidaria__microdados + description: Microdados de filiação partidária do TSE. + tests: + - custom_not_null_proportion_multiple_columns: + at_least: 0.55 + ignore_values: + - data_desfiliacao + - data_exclusao + - data_cadastro_desfiliacao + - motivo_desfiliacao + - motivo_cancelamento + - data_cancelamento + - nome_social + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [registro_filiacao] + columns: + - name: registro_filiacao + description: Sequecia do registro filiação + - name: sigla_partido + description: Sigla do partido + - name: sigla_uf + description: Sigla da unidade da federação + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + ignore_values: [ZZ] + - 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_municipio_tse + description: ID Município - TSE + - name: zona + description: Zona eleitoral + - name: secao + description: Seção eleitoral + - name: titulo_eleitor + description: Título de eleitor + - name: cpf + description: Cadastro de pessoa física + - name: nome + description: Nome do eleitor + - name: nome_social + description: Nome social do eleitor + - name: sexo + description: Sexo + - name: situacao_registro + description: Situação do registro + - name: motivo_desfiliacao + description: Código do motivo da desfiliação. Não foi encontrada na documentação + a tradução deste código + - name: motivo_cancelamento + description: Código do motivo de cancelamento. Não foi encontrada na documentação + a tradução deste código + - name: indicador_origem + description: Não foi encontrado uma definição na documentação para este campo + - name: data_filiacao + description: Data da filiação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_desfiliacao + description: Data de desfiliação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_cadastro_desfiliacao + description: Data do cadastro da desfiliação + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_cancelamento + description: Data de cancelamento + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_exclusao + description: Data de exclusão + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data + - name: data_extracao + description: Data de extração da linha + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__data') + field: data.data