diff --git a/models/br_rf_arrecadacao/br_rf_arrecadacao__cnae.sql b/models/br_rf_arrecadacao/br_rf_arrecadacao__cnae.sql index 274d138e..b6f14265 100644 --- a/models/br_rf_arrecadacao/br_rf_arrecadacao__cnae.sql +++ b/models/br_rf_arrecadacao/br_rf_arrecadacao__cnae.sql @@ -1,9 +1,21 @@ -{{ config(alias="cnae", schema="br_rf_arrecadacao") }} +{{ + config( + schema="br_rf_arrecadacao", + alias="cnae", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2016, "end": 2024, "interval": 1}, + }, + cluster_by=["mes"], + ) +}} + select safe_cast(ano as int64) ano, safe_cast(mes as int64) mes, safe_cast(secao_sigla as string) secao_sigla, - safe_cast(secao_nome as string) secao_nome, safe_cast(imposto_importacao as float64) imposto_importacao, safe_cast(imposto_exportacao as float64) imposto_exportacao, safe_cast(ipi as float64) ipi, @@ -21,4 +33,4 @@ select safe_cast(pagamento_unificado as float64) pagamento_unificado, safe_cast(outras_receitas_rfb as float64) outras_receitas_rfb, safe_cast(demais_receitas as float64) demais_receitas, -from `basedosdados-staging.br_rf_arrecadacao_staging.cnae` as t +from `basedosdados-dev.br_rf_arrecadacao_staging.cnae` as t diff --git a/models/br_rf_arrecadacao/br_rf_arrecadacao__ir_ipi.sql b/models/br_rf_arrecadacao/br_rf_arrecadacao__ir_ipi.sql index d0e21a42..3982c853 100644 --- a/models/br_rf_arrecadacao/br_rf_arrecadacao__ir_ipi.sql +++ b/models/br_rf_arrecadacao/br_rf_arrecadacao__ir_ipi.sql @@ -1,4 +1,17 @@ -{{ config(alias="ir_ipi", schema="br_rf_arrecadacao") }} +{{ + config( + schema="br_rf_arrecadacao", + alias="ir_ipi", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2019, "end": 2024, "interval": 1}, + }, + cluster_by=["mes"], + ) +}} + select safe_cast(ano as int64) ano, safe_cast(mes as int64) mes, @@ -10,4 +23,4 @@ select safe_cast(restituicao as float64) restituicao, safe_cast(outros as float64) outros, safe_cast(arrecadacao_liquida as float64) arrecadacao_liquida, -from `basedosdados-staging.br_rf_arrecadacao_staging.ir_ipi` as t +from `basedosdados-dev.br_rf_arrecadacao_staging.ir_ipi` as t diff --git a/models/br_rf_arrecadacao/br_rf_arrecadacao__itr.sql b/models/br_rf_arrecadacao/br_rf_arrecadacao__itr.sql index 62d48cc9..e52f5758 100644 --- a/models/br_rf_arrecadacao/br_rf_arrecadacao__itr.sql +++ b/models/br_rf_arrecadacao/br_rf_arrecadacao__itr.sql @@ -1,9 +1,22 @@ -{{ config(alias="itr", schema="br_rf_arrecadacao") }} +{{ + config( + schema="br_rf_arrecadacao", + alias="itr", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2017, "end": 2024, "interval": 1}, + }, + cluster_by=["mes"], + ) +}} + select safe_cast(ano as int64) ano, safe_cast(mes as int64) mes, - safe_cast(nome_uf as string) nome_uf, - safe_cast(regiao_politica as string) regiao_politica, - safe_cast(cidade_uf as string) cidade_uf, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(sigla_regiao as string) sigla_regiao, + safe_cast(cidade as string) cidade, safe_cast(valor_arrecadado as float64) valor_arrecadado, -from `basedosdados-staging.br_rf_arrecadacao_staging.itr` as t +from `basedosdados-dev.br_rf_arrecadacao_staging.itr` as t diff --git a/models/br_rf_arrecadacao/br_rf_arrecadacao__natureza_juridica.sql b/models/br_rf_arrecadacao/br_rf_arrecadacao__natureza_juridica.sql index 2aa0cad6..f3b670f2 100644 --- a/models/br_rf_arrecadacao/br_rf_arrecadacao__natureza_juridica.sql +++ b/models/br_rf_arrecadacao/br_rf_arrecadacao__natureza_juridica.sql @@ -1,10 +1,23 @@ -{{ config(alias="natureza_juridica", schema="br_rf_arrecadacao") }} +{{ + config( + schema="br_rf_arrecadacao", + alias="natureza_juridica", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2016, "end": 2024, "interval": 1}, + }, + cluster_by=["mes"], + ) +}} + with referencia_codigo as ( select id_natureza_juridica, substr(cast(id_natureza_juridica as string), 0, 3) as inicio_codigo - from basedosdados - staging.br_bd_diretorios_brasil.natureza_juridica + from basedosdados - dev.br_bd_diretorios_brasil.natureza_juridica ) select safe_cast(t.ano as int64) ano, @@ -12,7 +25,6 @@ select safe_cast( referencia_codigo.id_natureza_juridica as string ) natureza_juridica_codigo, - safe_cast(t.natureza_juridica_nome as string) natureza_juridica_nome, safe_cast(t.imposto_importacao as float64) imposto_importacao, safe_cast(t.imposto_exportacao as float64) imposto_exportacao, safe_cast(t.ipi as float64) ipi, @@ -30,6 +42,6 @@ select safe_cast(t.pagamento_unificado as float64) pagamento_unificado, safe_cast(t.outras_receitas_rfb as float64) outras_receitas_rfb, safe_cast(t.demais_receitas as float64) demais_receitas, -from `basedosdados-staging.br_rf_arrecadacao_staging.natureza_juridica` as t -left join +from `basedosdados-dev.br_rf_arrecadacao_staging.natureza_juridica` as t +inner join referencia_codigo on t.natureza_juridica_codigo = referencia_codigo.inicio_codigo diff --git a/models/br_rf_arrecadacao/br_rf_arrecadacao__uf.sql b/models/br_rf_arrecadacao/br_rf_arrecadacao__uf.sql index 586a847d..39f86f7f 100644 --- a/models/br_rf_arrecadacao/br_rf_arrecadacao__uf.sql +++ b/models/br_rf_arrecadacao/br_rf_arrecadacao__uf.sql @@ -62,4 +62,4 @@ select safe_cast(receita_previdenciaria_propria as float64) receita_previdenciaria_propria, safe_cast(receita_previdenciaria_demais as float64) receita_previdenciaria_demais, safe_cast(receitas_outros_orgaos as float64) receitas_outros_orgaos, -from `basedosdados-staging.br_rf_arrecadacao_staging.uf` as t +from `basedosdados-dev.br_rf_arrecadacao_staging.uf` as t diff --git a/models/br_rf_arrecadacao/cnae b/models/br_rf_arrecadacao/cnae new file mode 100644 index 00000000..74eb43da --- /dev/null +++ b/models/br_rf_arrecadacao/cnae @@ -0,0 +1,506 @@ +--- +version: 2 +models: + - name: br_rf_arrecadacao__uf + description: Contém os dados de arrecadação mensal por Unidade da Federação, contendo + receitas administradas e não administradas pela Receita Federal do Brasil. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [ano, mes, sigla_uf] + columns: + - name: ano + description: Ano de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: mes + description: Mês de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__mes') + field: mes.mes + - dbt_utils.not_null_proportion: + at_least: 0.95 + - 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.95 + - name: imposto_importacao + description: Imposto sobre a Importação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: imposto_exportacao + description: Imposto sobre a Exportação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: ipi_fumo + description: Imposto sobre Produtos Industrializado incidente sobre setor + de fumo. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: ipi_bebidas + description: Imposto sobre Produtos Industrializado incidente sobre setor + de bebidas. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: ipi_automoveis + description: Imposto sobre Produtos Industrializado incidente sobre setor + de automóveis. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: ipi_importacoes + description: Imposto sobre Produtos Industrializado vinculado à importação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: ipi_outros + description: Imposto sobre Produtos Industrializado incidente sobre outros + produtos. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irpf + description: Imposto sobre a Renda da Pessoa Física. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irpj_entidades_financeiras + description: Imposto sobre a Renda da Pessoa Jurídica incidente em entidades + financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irpj_demais_empresas + description: Imposto sobre a Renda da Pessoa Jurídica incidente em demais + empresas. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irrf_rendimentos_trabalho + description: Imposto sobre a Renda Retido na Fonte referente à rendimentos + do trabalho. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irrf_rendimentos_capital + description: Imposto sobre a Renda Retido na Fonte referente à rendimentos + do capital. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irrf_remessas_exterior + description: Imposto sobre a Renda Retido na Fonte referente à remessas para + o exterior. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: irrf_outros_rendimentos + description: Imposto sobre a Renda Retido na Fonte referente à outros rendimentos. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: iof + description: Imposto sobre Operações Financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: itr + description: Imposto sobre a Propriedade Territorial Rural. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: ipmf + description: Imposto Provisório sobre Movimentação Financeira. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.06 + - name: cpmf + description: Contribuição Provisória sobre Movimentação Financeira. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.45 + - name: cofins + description: Contribuição para o Financiamento da Seguridade Social. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.12 + - name: cofins_entidades_financeiras + description: Contribuição para o Financiamento da Seguridade Social referente + à entidades financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 + - name: cofins_demais_empresas + description: Contribuição para o Financiamento da Seguridade Social referente + à demais empresas. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 + - name: pis_pasep + description: Programa de Integração Social e o Programa de Formação do Patrimônio + do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.12 + - name: pis_pasep_entidades_financeiras + description: Programa de Integração Social e o Programa de Formação do Patrimônio + do Servidor Público referente à entidades financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 + - name: pis_pasep_demais_empresas + description: Programa de Integração Social e o Programa de Formação do Patrimônio + do Servidor Público referente à demais empresas. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 + - name: csll + description: Contribuição Social sobre o Lucro Líquido. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.12 + - name: csll_entidades_financeiras + description: Contribuição Social sobre o Lucro Líquido referente à entidades + financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 + - name: csll_demais_empresas + description: Contribuição Social sobre o Lucro Líquido referente à demais + empresas. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 + - name: cide_combustiveis_parcela_nao_dedutivel + description: Parcela não dedutível da Contribuição de Intervenção no Domínio + Econômico aplicada à combustíveis. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.03 + - name: cide_combustiveis + description: Contribuição de Intervenção no Domínio Econômico aplicada à combustíveis. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.75 + - name: cpsss_1 + description: Contribuição para o Plano de Seguridade Social do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.12 + - name: cpsss_2 + description: Contribuição para o Plano de Seguridade Social do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.50 + - name: contribuicao_fundaf + description: Contribuições para o Fundo Especial de Desenvolvimento e Aperfeiçoamento + das Atividades de Fiscalização (Fundaf). + tests: + - dbt_utils.not_null_proportion: + at_least: 0.55 + - name: refis + description: Programa de Recuperação Fiscal. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.03 + - name: paes + description: Parcelamento Especial. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.03 + - name: retencoes_fonte + description: Retenções na fonte de CSLL, Cofins e Pis/Pasep, previstas no + art. 30 da Lei nº 10.833, de 29 de dezembro de 2003. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.02 + - name: pagamento_unificado + description: Pagamentos referentes a vários tributos feitos em um único documento + de arrecadação, tipo parcelamentos, retenções, Simples etc. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.04 + - name: outras_receitas_rfb + description: Outras receitas administradas pela RFB. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 + - name: demais_receitas + description: Outras receitas não administradas pela RFB. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.25 + - name: receita_previdenciaria + description: Total da Receita Previdenciária. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.25 + - name: receita_previdenciaria_propria + description: Receita Previdenciária Própria. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.15 + - name: receita_previdenciaria_demais + description: Receita Previdenciária Demais. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.15 + - name: receitas_outros_orgaos + description: Receitas administradas por outros órgãos. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.50 + - name: br_rf_arrecadacao__cnae + description: Contém os dados de arrecadação bruta mensal realizadas em Documento + de Arrecadação de Receitas Federais (Darf), por tributo, efetuada pelos setores + econômicos, identificados pela seção, constantes da tabela de Classificação + Nacional de Atividades Econômicas(Cnae). + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [ano, mes, secao_sigla, secao_nome] + - not_null_proportion_multiple_columns: + at_least: 0.85 + columns: + - name: ano + description: Ano de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: mes + description: Mês de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__mes') + field: mes.mes + - name: secao_sigla + description: Código da Seção da atividade econômica constante da Cnae. + tests: + - custom_relationships: + to: ref('br_bd_diretorios_brasil__cnae_2') + field: secao + ignore_values: ['IN','NI','PF'] + - name: secao_nome + description: Nome da Seção da atividade econômica constante da Cnae + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__cnae_2') + field: descricao_secao + - name: imposto_importacao + description: Imposto sobre a Importação. + - name: imposto_exportacao + description: Imposto sobre a Exportação. + - name: ipi + description: Imposto sobre Produtos Industrializados. + - name: irpf + description: Imposto sobre a Renda da Pessoa Física. + - name: irpj + description: Imposto sobre a Renda da Pessoa Jurídica. + - name: irrf + description: Imposto sobre a Renda Retido na Fonte. + - name: iof + description: Imposto sobre Operações Financeiras. + - name: itr + description: Imposto sobre a Propriedade Territorial Rural. + - name: cofins + description: Contribuição para o Financiamento da Seguridade Social. + - name: pis_pasep + description: Programa de Integração Social e o Programa de Formação do Patrimônio + do Servidor Público. + - name: csll + description: Contribuição Social sobre o Lucro Líquido. + - name: cide_combustiveis + description: Contribuição de Intervenção no Domínio Econômico aplicada à combustíveis. + - name: contribuicao_previdenciaria + description: Contribuição Previdenciária arrecadada em Darf. + - name: cpsss + description: Contribuição para o Plano de Seguridade Social do Servidor Público. + - name: pagamento_unificado + description: Pagamentos referentes a vários tributos feitos em um único documento + de arrecadação, como parcelamentos, retenções, Simples etc. + - name: outras_receitas_rfb + description: Outras receitas administradas pela RFB. + - name: demais_receitas + description: Outras receitas não administradas pela RFB. + - name: br_rf_arrecadacao__natureza_juridica + description: Contém os dados de arrecadação bruta mensal realizadas em Documento + de Arrecadação de Receitas Federais (Darf), por tributo, efetuada pelos diversos + tipos de Naturezas Jurídicas. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - ano + - mes + - natureza_juridica_codigo + - natureza_juridica_nome + - not_null_proportion_multiple_columns: + at_least: 0.95 + columns: + - name: ano + description: Ano de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: mes + description: Mês de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__mes') + field: mes.mes + - name: natureza_juridica_codigo + description: Código do tipo de Natureza Jurídica. + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__natureza_juridica') + field: id_natureza_juridica + - name: natureza_juridica_nome + description: Nome do tipo da Natureza Jurídica. + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__natureza_juridica') + field: descricao + - name: imposto_importacao + description: Imposto sobre a Importação. + - name: imposto_exportacao + description: Imposto sobre a Exportação. + - name: ipi + description: Imposto sobre Produtos Industrializados. + - name: irpf + description: Imposto sobre a Renda da Pessoa Física. + - name: irpj + description: Imposto sobre a Renda da Pessoa Jurídica. + - name: irrf + description: Imposto sobre a Renda Retido na Fonte. + - name: iof + description: Imposto sobre Operações Financeiras. + - name: itr + description: Imposto sobre a Propriedade Territorial Rural. + - name: cofins + description: Contribuição para o Financiamento da Seguridade Social. + - name: pis_pasep + description: Programa de Integração Social e o Programa de Formação do Patrimônio + do Servidor Público. + - name: csll + description: Contribuição Social sobre o Lucro Líquido. + - name: cide_combustiveis + description: Contribuição de Intervenção no Domínio Econômico aplicada à combustíveis. + - name: contribuicao_previdenciaria + description: Contribuição Previdenciária arrecadada em Darf. + - name: cpsss + description: Contribuição para o Plano de Seguridade Social do Servidor Público. + - name: pagamento_unificado + description: Pagamentos referentes a vários tributos feitos em um único documento + de arrecadação, como parcelamentos, retenções, Simples etc. + - name: outras_receitas_rfb + description: Outras receitas administradas pela RFB. + - name: demais_receitas + description: Outras receitas não administradas pela RFB. + - name: br_rf_arrecadacao__ir_ipi + description: Contém os dados de arrecadação decendial do Imposto sobre a Renda + (IR) e do Imposto sobre Produtos Industrializados (IPI), discriminados por arrecadação + bruta, os respectivos eventos que afetam essa arrecadação bruta e a arrecadação + líquida, valor este último passível de repasse aos Fundos de Participação dos + Estados e do Municípios, FPM e FPE, de acordo com dispositivo constitucional. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: [ano, mes, tributo, decendio] + - not_null_proportion_multiple_columns: + at_least: 0.95 + columns: + - name: ano + description: Ano de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: mes + description: Mês de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__mes') + field: mes.mes + - name: tributo + description: Identificação de Tributo (IR ou IPI). + - name: decendio + description: Decêndio de referência. + - name: arrecadacao_bruta + description: Valor da arrecadação bruta dos tributos sem nenhum acréscimo + ou dedução. É a etapa inicial da arrecadação, quando há o pagamento efetuado + pelo contribuinte. + - name: retificacao + description: Valor do saldo das retificações efetuadas nos Documentos de Arrecadação + de Receitas Federais (Darf). São alterações feitas nos documentos de arrecadação + em função de erro de preenchimento. + - name: compensacao + description: Valor do saldo das compensações efetuadas. Utilização de valores + pagos anteriormente para quitação de débitos de outros tributos, distintos + de IR ou IPI, e vice-versa. + - name: restituicao + description: Valor do saldo das restituições efetuadas pela Receita Federal + em função de pagamentos feitos a maior ou indevidos. + - name: outros + description: Demais eventos que agem sobre o valor da arrecadação bruta. + - name: arrecadacao_liquida + description: Valor resultante da arrecadação bruta, depois da incidência dos + demais eventos de arrecadação. + - name: br_rf_arrecadacao__itr + description: Contém os dados de arrecadação líquida mensal do Imposto sobre a + Propriedade Territorial Rural (ITR), realizada pelas propriedades rurais, passível + de repasse aos próprios municípios onde se localizam essas propriedades rurais, + conforme a situação do município, conveniado ou não conveniado com a União para + fiscalizar e cobrar o ITR, de acordo com dispositivo constitucional. + tests: + - dbt_utils.unique_combination_of_columns: + combination_of_columns: + - ano + - mes + - nome_uf + - regiao_politica + - cidade_uf + - not_null_proportion_multiple_columns: + at_least: 0.95 + columns: + - name: ano + description: Ano de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__ano') + field: ano.ano + - name: mes + description: Mês de referência. + tests: + - relationships: + to: ref('br_bd_diretorios_data_tempo__mes') + field: mes.mes + - name: nome_uf + description: Nome da Unidade da Federação onde se localiza o município conveniado + ou não conveniado. + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: nome + - name: regiao_politica + description: Nome da Região Política onde se localiza o município conveniado + ou não conveniado. + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: regiao + - name: cidade_uf + description: "Nome do município conveniado ou não conveniado seguido da sigla\ + \ da\nUnidade da Federação onde se localiza o município." + - name: valor_arrecadado + description: Valor arrecadado. diff --git a/models/br_rf_arrecadacao/code/clean_cnae.py b/models/br_rf_arrecadacao/code/clean_cnae.py index c669f758..a3b98b20 100644 --- a/models/br_rf_arrecadacao/code/clean_cnae.py +++ b/models/br_rf_arrecadacao/code/clean_cnae.py @@ -33,6 +33,7 @@ def rename_columns(df): def change_types(df): df['ano'] = df['ano'].astype('int') df['mes'] = get_month_number(df['mes']) + df['secao_nome'] = df['secao_nome'].str.title() #All remaining columns are monetary values for col in df.columns[4:]: diff --git a/models/br_rf_arrecadacao/code/clean_data.py b/models/br_rf_arrecadacao/code/clean_data.py new file mode 100644 index 00000000..9c65d6d8 --- /dev/null +++ b/models/br_rf_arrecadacao/code/clean_data.py @@ -0,0 +1,120 @@ +import os +import numpy as np +import pandas as pd + +file_directory = os.path.dirname(__file__) + +def read_data(): + data_directory = os.path.join(file_directory, '../input/arrecadacao-estado.csv') + return pd.read_csv(data_directory, sep=';') + +def removeEmptyRows(df): + return df.dropna(axis=0, how='all') + +def rename_columns(df): + name_dict = { + 'Ano':'ano', + 'Mês':'mes', + 'UF':'sigla_uf', + 'IMPOSTO SOBRE IMPORTAÇÃO':'imposto_importacao', + 'IMPOSTO SOBRE EXPORTAÇÃO':'imposto_exportacao', + 'IPI - FUMO':'ipi_fumo', + 'IPI - BEBIDAS':'ipi_bebidas', + 'IPI - AUTOMÓVEIS':'ipi_automoveis', + 'IPI - VINCULADO À IMPORTACAO':'ipi_importacoes', + 'IPI - OUTROS':'ipi_outros', + 'IRPF':'irpf', + 'IRPJ - ENTIDADES FINANCEIRAS':'irpj_entidades_financeiras', + 'IRPJ - DEMAIS EMPRESAS':'irpj_demais_empresas', + 'IRRF - RENDIMENTOS DO TRABALHO':'irrf_rendimentos_trabalho', + 'IRRF - RENDIMENTOS DO CAPITAL':'irrf_rendimentos_capital', + 'IRRF - REMESSAS P/ EXTERIOR':'irrf_remessas_exterior', + 'IRRF - OUTROS RENDIMENTOS':'irrf_outros_rendimentos', + 'IMPOSTO S/ OPERAÇÕES FINANCEIRAS':'iof', + 'IMPOSTO TERRITORIAL RURAL':'itr', + 'IMPOSTO PROVIS.S/ MOVIMENT. FINANC. - IPMF':'ipmf', + 'CPMF':'cpmf', + 'COFINS':'cofins', + 'COFINS - FINANCEIRAS':'cofins_financeiras', + 'COFINS - DEMAIS':'cofins_demais_empresas', + 'CONTRIBUIÇÃO PARA O PIS/PASEP':'pis_pasep', + 'CONTRIBUIÇÃO PARA O PIS/PASEP - FINANCEIRAS':'pis_pasep_entidades_financeiras', + 'CONTRIBUIÇÃO PARA O PIS/PASEP - DEMAIS':'pis_pasep_demais_empresas', + 'CSLL':'csll', + 'CSLL - FINANCEIRAS':'csll_financeiras', + 'CSLL - DEMAIS':'csll_demais_empresas', + 'CIDE-COMBUSTÍVEIS (parc. não dedutível)': 'cide_combustiveis_parcela_nao_dedutivel', + 'CIDE-COMBUSTÍVEIS':'cide_combustiveis', + 'CONTRIBUIÇÃO PLANO SEG. SOC. SERVIDORES':'cpsss_1', + 'CPSSS - Contrib. p/ o Plano de Segurid. Social Serv. Público':'cpsss_2', + 'CONTRIBUICÕES PARA FUNDAF':'contribuicoes_fundaf', + 'REFIS':'refis', + 'PAES':'paes', + 'RETENÇÃO NA FONTE - LEI 10.833, Art. 30':'retencoes_fonte', + 'PAGAMENTO UNIFICADO':'pagamento_unificado', + 'OUTRAS RECEITAS ADMINISTRADAS':'outras_receitas_', + 'DEMAIS RECEITAS':'demais_receitas', + 'RECEITA PREVIDENCIÁRIA':'receita_previdenciaria', + 'RECEITA PREVIDENCIÁRIA - PRÓPRIA':'receita_previdenciaria_propria', + 'RECEITA PREVIDENCIÁRIA - DEMAIS':'receita_previdenciaria_demais', + 'ADMINISTRADAS POR OUTROS ÓRGÃOS':'receitas_outros_orgaos' + } + + return df.rename(columns=name_dict) + +def replace_commas(value): + string_value = str(value) + num_commas = string_value.count(',') + if num_commas == 1: + return string_value.replace(',','.') + elif num_commas > 1: + return string_value.replace(',','',num_commas-1).replace(',','.') + else: + return string_value + +def remove_dots(value): + string_value = str(value) + num_dots = string_value.count('.') + if num_dots > 1: + return string_value.replace('.','',num_dots-1) + else: + return string_value + +def get_month_number(month_column): + month_numbers = { + 'Janeiro': '1', + 'Fevereiro': '2', + 'Março': '3', + 'Abril': '4', + 'Maio': '5', + 'Junho': '6', + 'Julho': '7', + 'Agosto': '8', + 'Setembro': '9', + 'Outubro': '10', + 'Novembro': '11', + 'Dezembro':'12' + } + return month_column.replace(month_numbers).astype('int') + +def change_types(df): + df['ano'] = df['ano'].astype('int') + df['mes'] = get_month_number(df['mes']) + df['sigla_uf'] = df['sigla_uf'].astype('string') + + #All remaining columns are monetary values + for col in df.columns[3:]: + df[col] = df[col].apply(replace_commas).apply(remove_dots).astype('float') + + return df + +def save_data(df): + data_directory = os.path.join(file_directory, '../output/br_rf_arrecadacao') + df.to_parquet(data_directory, partition_cols=['ano','mes']) + +if __name__ == '__main__': + df = read_data() + df = removeEmptyRows(df) + df = rename_columns(df) + df = change_types(df) + save_data(df) diff --git a/models/br_rf_arrecadacao/code/clean_functions.py b/models/br_rf_arrecadacao/code/clean_functions.py index 7a2d683b..260da075 100644 --- a/models/br_rf_arrecadacao/code/clean_functions.py +++ b/models/br_rf_arrecadacao/code/clean_functions.py @@ -2,7 +2,7 @@ import numpy as np import pandas as pd from typing import List -from pathlib import Path +from pathlib import Path file_directory = os.path.dirname(__file__) @@ -26,7 +26,7 @@ def replace_commas(value): return string_value.replace(',','',num_commas-1).replace(',','.') else: return string_value - + def remove_dots(value): string_value = str(value) num_dots = string_value.count('.') @@ -56,6 +56,53 @@ def get_month_number(month_column): } return month_inits.replace(month_numbers).astype('int') +def get_state_letters(state_column): + + state_lower = state_column.str.lower() + states = { + "acre": "AC", + "alagoas": "AL", + "amapá": "AP", + "amazonas": "AM", + "bahia": "BA", + "ceará": "CE", + "distrito federal": "DF", + "espírito santo": "ES", + "goiás": "GO", + "maranhão": "MA", + "mato grosso": "MT", + "mato grosso do sul": "MS", + "minas gerais": "MG", + "pará": "PA", + "paraíba": "PB", + "paraná": "PR", + "pernambuco": "PE", + "piauí": "PI", + "rio de janeiro": "RJ", + "rio grande do norte": "RN", + "rio grande do sul": "RS", + "rondônia": "RO", + "roraima": "RR", + "santa catarina": "SC", + "são paulo": "SP", + "sergipe": "SE", + "tocantins": "TO" + } + return state_lower.replace(states) + +def get_region_letters(region_names): + + region_lower = region_names.str.lower() + + regions = { + "norte" : "N", + "sul" : "S", + "centro-oeste" : "CO", + "sudeste" : "SE", + "nordeste" : "NE" + } + return region_lower.replace(regions) + def to_partitions( data: pd.DataFrame, partition_columns: List[str], diff --git a/models/br_rf_arrecadacao/code/clean_itr.py b/models/br_rf_arrecadacao/code/clean_itr.py index 8eea9ffb..3a83ea92 100644 --- a/models/br_rf_arrecadacao/code/clean_itr.py +++ b/models/br_rf_arrecadacao/code/clean_itr.py @@ -22,9 +22,24 @@ def change_types(df): return df +def format_state(df): + df['sigla_uf'] = get_state_letters(df['nome_uf']) + return df.drop('nome_uf',axis=1) + +def format_region(df): + df['sigla_regiao'] = get_region_letters(df['regiao_politica']) + return df.drop('regiao_politica',axis=1) + +def format_city(df): + df['cidade'] = df['cidade_uf'].str.split(' - ').str[0] + return df.drop('cidade_uf',axis=1) + if __name__ == '__main__': df = read_data(file_dir='../input/arrecadacao-itr.csv') df = remove_empty_rows(df) df = rename_columns(df) df = change_types(df) + df = format_state(df) + df = format_region(df) + df = format_city(df) save_data(df=df,file_dir='../output/br_rf_arrecadacao_itr',partition_cols=['ano','mes']) diff --git a/models/br_rf_arrecadacao/schema.yml b/models/br_rf_arrecadacao/schema.yml index 6ad124e7..9239630b 100644 --- a/models/br_rf_arrecadacao/schema.yml +++ b/models/br_rf_arrecadacao/schema.yml @@ -269,9 +269,7 @@ models: Nacional de Atividades Econômicas(Cnae). tests: - dbt_utils.unique_combination_of_columns: - combination_of_columns: [ano, mes, secao_sigla, secao_nome] - - not_null_proportion_multiple_columns: - at_least: 0.95 + combination_of_columns: [ano, mes, secao_sigla] columns: - name: ano description: Ano de referência. @@ -279,73 +277,119 @@ models: - relationships: to: ref('br_bd_diretorios_data_tempo__ano') field: ano.ano + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: mes description: Mês de referência. tests: - relationships: to: ref('br_bd_diretorios_data_tempo__mes') field: mes.mes + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: secao_sigla description: Código da Seção da atividade econômica constante da Cnae. tests: - - relationships: + - custom_relationships: to: ref('br_bd_diretorios_brasil__cnae_2') field: secao - - name: secao_nome - description: Nome da Seção da atividade econômica constante da Cnae - tests: - - relationships: - to: ref('br_bd_diretorios_brasil__cnae_2') - field: descricao_secao + ignore_values: [IN, NI, PF] + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: imposto_importacao description: Imposto sobre a Importação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.85 - name: imposto_exportacao description: Imposto sobre a Exportação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.35 - name: ipi description: Imposto sobre Produtos Industrializados. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: irpf description: Imposto sobre a Renda da Pessoa Física. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.60 - name: irpj description: Imposto sobre a Renda da Pessoa Jurídica. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: irrf description: Imposto sobre a Renda Retido na Fonte. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: iof description: Imposto sobre Operações Financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 - name: itr description: Imposto sobre a Propriedade Territorial Rural. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.85 - name: cofins description: Contribuição para o Financiamento da Seguridade Social. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: pis_pasep description: Programa de Integração Social e o Programa de Formação do Patrimônio do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: csll description: Contribuição Social sobre o Lucro Líquido. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: cide_combustiveis description: Contribuição de Intervenção no Domínio Econômico aplicada à combustíveis. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.80 - name: contribuicao_previdenciaria description: Contribuição Previdenciária arrecadada em Darf. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: cpsss description: Contribuição para o Plano de Seguridade Social do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.65 - name: pagamento_unificado description: Pagamentos referentes a vários tributos feitos em um único documento de arrecadação, como parcelamentos, retenções, Simples etc. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: outras_receitas_rfb description: Outras receitas administradas pela RFB. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: demais_receitas description: Outras receitas não administradas pela RFB. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: br_rf_arrecadacao__natureza_juridica description: Contém os dados de arrecadação bruta mensal realizadas em Documento de Arrecadação de Receitas Federais (Darf), por tributo, efetuada pelos diversos tipos de Naturezas Jurídicas. tests: - dbt_utils.unique_combination_of_columns: - combination_of_columns: - - ano - - mes - - natureza_juridica_codigo - - natureza_juridica_nome - - not_null_proportion_multiple_columns: - at_least: 0.95 + combination_of_columns: [ano, mes, natureza_juridica_codigo] columns: - name: ano description: Ano de referência. @@ -353,60 +397,111 @@ models: - relationships: to: ref('br_bd_diretorios_data_tempo__ano') field: ano.ano + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: mes description: Mês de referência. tests: - relationships: to: ref('br_bd_diretorios_data_tempo__mes') field: mes.mes + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: natureza_juridica_codigo description: Código do tipo de Natureza Jurídica. tests: - relationships: to: ref('br_bd_diretorios_brasil__natureza_juridica') field: id_natureza_juridica - - name: natureza_juridica_nome - description: Nome do tipo da Natureza Jurídica. - tests: - - relationships: - to: ref('br_bd_diretorios_brasil__natureza_juridica') - field: descricao + - dbt_utils.not_null_proportion: + at_least: 0.95 - name: imposto_importacao description: Imposto sobre a Importação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.40 - name: imposto_exportacao description: Imposto sobre a Exportação. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.15 - name: ipi description: Imposto sobre Produtos Industrializados. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.35 - name: irpf description: Imposto sobre a Renda da Pessoa Física. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.20 - name: irpj description: Imposto sobre a Renda da Pessoa Jurídica. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.60 - name: irrf description: Imposto sobre a Renda Retido na Fonte. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: iof description: Imposto sobre Operações Financeiras. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.35 - name: itr description: Imposto sobre a Propriedade Territorial Rural. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.40 - name: cofins description: Contribuição para o Financiamento da Seguridade Social. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.75 - name: pis_pasep description: Programa de Integração Social e o Programa de Formação do Patrimônio do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.85 - name: csll description: Contribuição Social sobre o Lucro Líquido. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.65 - name: cide_combustiveis description: Contribuição de Intervenção no Domínio Econômico aplicada à combustíveis. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.35 - name: contribuicao_previdenciaria description: Contribuição Previdenciária arrecadada em Darf. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.75 - name: cpsss description: Contribuição para o Plano de Seguridade Social do Servidor Público. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.35 - name: pagamento_unificado description: Pagamentos referentes a vários tributos feitos em um único documento de arrecadação, como parcelamentos, retenções, Simples etc. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.90 - name: outras_receitas_rfb description: Outras receitas administradas pela RFB. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.75 - name: demais_receitas description: Outras receitas não administradas pela RFB. + tests: + - dbt_utils.not_null_proportion: + at_least: 0.75 - name: br_rf_arrecadacao__ir_ipi description: Contém os dados de arrecadação decendial do Imposto sobre a Renda (IR) e do Imposto sobre Produtos Industrializados (IPI), discriminados por arrecadação @@ -437,24 +532,24 @@ models: description: Decêndio de referência. - name: arrecadacao_bruta description: Valor da arrecadação bruta dos tributos sem nenhum acréscimo - ou dedução. É a etapa inicial da arrecadação, quando há o pagamento efetuado - pelo contribuinte. + ou dedução. É a etapa inicial da arrecadação, quando há o pagamento efetuado + pelo contribuinte. - name: retificacao description: Valor do saldo das retificações efetuadas nos Documentos de Arrecadação - de Receitas Federais (Darf). São alterações feitas nos documentos de arrecadação - em função de erro de preenchimento. + de Receitas Federais (Darf). São alterações feitas nos documentos de arrecadação + em função de erro de preenchimento. - name: compensacao description: Valor do saldo das compensações efetuadas. Utilização de valores - pagos anteriormente para quitação de débitos de outros tributos, distintos - de IR ou IPI, e vice-versa. + pagos anteriormente para quitação de débitos de outros tributos, distintos + de IR ou IPI, e vice-versa. - name: restituicao description: Valor do saldo das restituições efetuadas pela Receita Federal - em função de pagamentos feitos a maior ou indevidos. + em função de pagamentos feitos a maior ou indevidos. - name: outros description: Demais eventos que agem sobre o valor da arrecadação bruta. - name: arrecadacao_liquida description: Valor resultante da arrecadação bruta, depois da incidência dos - demais eventos de arrecadação. + demais eventos de arrecadação. - name: br_rf_arrecadacao__itr description: Contém os dados de arrecadação líquida mensal do Imposto sobre a Propriedade Territorial Rural (ITR), realizada pelas propriedades rurais, passível @@ -463,12 +558,7 @@ models: fiscalizar e cobrar o ITR, de acordo com dispositivo constitucional. tests: - dbt_utils.unique_combination_of_columns: - combination_of_columns: - - ano - - mes - - nome_uf - - regiao_politica - - cidade_uf + combination_of_columns: [ano, mes, sigla_uf, sigla_regiao, cidade] - not_null_proportion_multiple_columns: at_least: 0.95 columns: @@ -484,22 +574,21 @@ models: - relationships: to: ref('br_bd_diretorios_data_tempo__mes') field: mes.mes - - name: nome_uf - description: Nome da Unidade da Federação onde se localiza o município conveniado - ou não conveniado. + - name: sigla_uf + description: Sigla da Unidade da Federação onde se localiza o município conveniado + ou não conveniado. tests: - relationships: to: ref('br_bd_diretorios_brasil__uf') - field: nome - - name: regiao_politica - description: Nome da Região Política onde se localiza o município conveniado - ou não conveniado. + field: sigla + - name: sigla_regiao + description: Sigla da Região Política onde se localiza o município conveniado + ou não conveniado. tests: - relationships: - to: ref('br_bd_diretorios_brasil__uf') - field: regiao - - name: cidade_uf - description: "Nome do município conveniado ou não conveniado seguido da sigla\ - \ da\nUnidade da Federação onde se localiza o município." + to: ref('br_bd_diretorios_brasil__regiao') + field: sigla + - name: cidade + description: Nome do município conveniado ou não conveniado. - name: valor_arrecadado description: Valor arrecadado.