From 082941fda51883d8037e2d960090ab5cfda6390b Mon Sep 17 00:00:00 2001 From: uiro-bi Date: Wed, 22 May 2024 09:30:48 -0300 Subject: [PATCH 1/2] feat: add br_me_siconfi dbt models --- .github/workflows/elementary.yaml | 5 +- .../workflows/triggers-elementary-model.yaml | 1 - dbt_project.yml | 3 + ...siconfi__municipio_balanco_patrimonial.sql | 24 ++ ..._me_siconfi__municipio_despesas_funcao.sql | 25 ++ ...onfi__municipio_despesas_orcamentarias.sql | 25 ++ ...onfi__municipio_receitas_orcamentarias.sql | 25 ++ .../br_me_siconfi__uf_despesas_funcao.sql | 25 ++ ..._me_siconfi__uf_despesas_orcamentarias.sql | 25 ++ ..._me_siconfi__uf_receitas_orcamentarias.sql | 25 ++ models/br_me_siconfi/schema.yml | 237 ++++++++++++++++++ 11 files changed, 417 insertions(+), 3 deletions(-) create mode 100644 models/br_me_siconfi/br_me_siconfi__municipio_balanco_patrimonial.sql create mode 100644 models/br_me_siconfi/br_me_siconfi__municipio_despesas_funcao.sql create mode 100644 models/br_me_siconfi/br_me_siconfi__municipio_despesas_orcamentarias.sql create mode 100644 models/br_me_siconfi/br_me_siconfi__municipio_receitas_orcamentarias.sql create mode 100644 models/br_me_siconfi/br_me_siconfi__uf_despesas_funcao.sql create mode 100644 models/br_me_siconfi/br_me_siconfi__uf_despesas_orcamentarias.sql create mode 100644 models/br_me_siconfi/br_me_siconfi__uf_receitas_orcamentarias.sql create mode 100644 models/br_me_siconfi/schema.yml diff --git a/.github/workflows/elementary.yaml b/.github/workflows/elementary.yaml index a362beb0..4b659443 100644 --- a/.github/workflows/elementary.yaml +++ b/.github/workflows/elementary.yaml @@ -20,8 +20,9 @@ jobs: warehouse-type: bigquery adapter-version: 1.5.9 profiles-yml: ${{ secrets.ELEMENTARY_PROFILES_YML }} - edr-command: edr report --file-path "report.html" --days-back 90 && edr send-report --google-service-account-path - "/tmp/gcs_keyfile.json" --gcs-bucket-name "basedosdados" --update-bucket-website "true" --days-back 90 + edr-command: edr report --file-path "report.html" --days-back 90 && edr + send-report --google-service-account-path "/tmp/gcs_keyfile.json" --gcs-bucket-name + "basedosdados" --update-bucket-website "true" --days-back 90 bigquery-keyfile: ${{ secrets.BIGQUERY_KEYFILE }} gcs-keyfile: ${{ secrets.GCS_KEYFILE }} - name: Upload report diff --git a/.github/workflows/triggers-elementary-model.yaml b/.github/workflows/triggers-elementary-model.yaml index 2bf96a16..1bc8ee0f 100644 --- a/.github/workflows/triggers-elementary-model.yaml +++ b/.github/workflows/triggers-elementary-model.yaml @@ -4,7 +4,6 @@ on: schedule: - cron: 00 23 * * 1 workflow_dispatch: - jobs: run_elementary_models: name: Run elementary model diff --git a/dbt_project.yml b/dbt_project.yml index b2fc984a..e71522aa 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -255,6 +255,9 @@ models: br_me_sic: +materialized: table +schema: br_me_sic + br_me_siconfi: + +materialized: table + +schema: br_me_siconfi br_mec_prouni: +materialized: table +schema: br_mec_prouni diff --git a/models/br_me_siconfi/br_me_siconfi__municipio_balanco_patrimonial.sql b/models/br_me_siconfi/br_me_siconfi__municipio_balanco_patrimonial.sql new file mode 100644 index 00000000..b449d59a --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__municipio_balanco_patrimonial.sql @@ -0,0 +1,24 @@ +{{ + config( + schema="br_me_siconfi", + alias="municipio_balanco_patrimonial", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 1998, "end": 2024, "interval": 1}, + }, + ) +}} + + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_municipio as string) id_municipio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.municipio_balanco_patrimonial` as t diff --git a/models/br_me_siconfi/br_me_siconfi__municipio_despesas_funcao.sql b/models/br_me_siconfi/br_me_siconfi__municipio_despesas_funcao.sql new file mode 100644 index 00000000..e8baa2bd --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__municipio_despesas_funcao.sql @@ -0,0 +1,25 @@ +{{ + config( + schema="br_me_siconfi", + alias="municipio_despesas_funcao", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2004, "end": 2024, "interval": 1}, + }, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_municipio as string) id_municipio, + safe_cast(estagio as string) estagio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(estagio_bd as string) estagio_bd, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.municipio_despesas_funcao` as t diff --git a/models/br_me_siconfi/br_me_siconfi__municipio_despesas_orcamentarias.sql b/models/br_me_siconfi/br_me_siconfi__municipio_despesas_orcamentarias.sql new file mode 100644 index 00000000..83ab5699 --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__municipio_despesas_orcamentarias.sql @@ -0,0 +1,25 @@ +{{ + config( + schema="br_me_siconfi", + alias="municipio_despesas_orcamentarias", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 1989, "end": 2024, "interval": 1}, + }, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_municipio as string) id_municipio, + safe_cast(estagio as string) estagio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(estagio_bd as string) estagio_bd, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.municipio_despesas_orcamentarias` as t diff --git a/models/br_me_siconfi/br_me_siconfi__municipio_receitas_orcamentarias.sql b/models/br_me_siconfi/br_me_siconfi__municipio_receitas_orcamentarias.sql new file mode 100644 index 00000000..64f0f8d8 --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__municipio_receitas_orcamentarias.sql @@ -0,0 +1,25 @@ +{{ + config( + schema="br_me_siconfi", + alias="municipio_receitas_orcamentarias", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 1989, "end": 2024, "interval": 1}, + }, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_municipio as string) id_municipio, + safe_cast(estagio as string) estagio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(estagio_bd as string) estagio_bd, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.municipio_receitas_orcamentarias` as t diff --git a/models/br_me_siconfi/br_me_siconfi__uf_despesas_funcao.sql b/models/br_me_siconfi/br_me_siconfi__uf_despesas_funcao.sql new file mode 100644 index 00000000..cbf34bcd --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__uf_despesas_funcao.sql @@ -0,0 +1,25 @@ +{{ + config( + schema="br_me_siconfi", + alias="uf_despesas_funcao", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2013, "end": 2024, "interval": 1}, + }, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_uf as string) id_uf, + safe_cast(estagio as string) estagio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(estagio_bd as string) estagio_bd, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.uf_despesas_funcao` as t diff --git a/models/br_me_siconfi/br_me_siconfi__uf_despesas_orcamentarias.sql b/models/br_me_siconfi/br_me_siconfi__uf_despesas_orcamentarias.sql new file mode 100644 index 00000000..f6038e57 --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__uf_despesas_orcamentarias.sql @@ -0,0 +1,25 @@ +{{ + config( + schema="br_me_siconfi", + alias="uf_despesas_orcamentarias", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2013, "end": 2024, "interval": 1}, + }, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_uf as string) id_uf, + safe_cast(estagio as string) estagio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(estagio_bd as string) estagio_bd, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.uf_despesas_orcamentarias` as t diff --git a/models/br_me_siconfi/br_me_siconfi__uf_receitas_orcamentarias.sql b/models/br_me_siconfi/br_me_siconfi__uf_receitas_orcamentarias.sql new file mode 100644 index 00000000..e0adcb03 --- /dev/null +++ b/models/br_me_siconfi/br_me_siconfi__uf_receitas_orcamentarias.sql @@ -0,0 +1,25 @@ +{{ + config( + schema="br_me_siconfi", + alias="uf_receitas_orcamentarias", + materialized="table", + partition_by={ + "field": "ano", + "data_type": "int64", + "range": {"start": 2013, "end": 2024, "interval": 1}, + }, + ) +}} + +select + safe_cast(ano as int64) ano, + safe_cast(sigla_uf as string) sigla_uf, + safe_cast(id_uf as string) id_uf, + safe_cast(estagio as string) estagio, + safe_cast(portaria as string) portaria, + safe_cast(conta as string) conta, + safe_cast(estagio_bd as string) estagio_bd, + safe_cast(id_conta_bd as string) id_conta_bd, + safe_cast(conta_bd as string) conta_bd, + safe_cast(valor as float64) valor +from `basedosdados-staging.br_me_siconfi_staging.uf_receitas_orcamentarias` as t diff --git a/models/br_me_siconfi/schema.yml b/models/br_me_siconfi/schema.yml new file mode 100644 index 00000000..9cc2bc1f --- /dev/null +++ b/models/br_me_siconfi/schema.yml @@ -0,0 +1,237 @@ +--- +version: 2 +models: + - name: br_me_siconfi__municipio_balanco_patrimonial + description: Tabela do balanço patrimonial a nível de município. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - 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: portaria + description: Portaria + - name: conta + description: Conta + - name: id_conta_bd + description: ID Conta - Base dos Dados + - name: conta_bd + description: Conta - Base dos Dados + - name: valor + description: Valor + - name: br_me_siconfi__municipio_despesas_funcao + description: Tabela de despesas por função a nível de município. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - 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: estagio + description: Estágio + - name: portaria + description: Portaria + - name: conta + description: Conta + - name: estagio_bd + description: Estágio - Compatibilizado pela Base dos Dados + - name: id_conta_bd + description: ID Conta - Compatibilizado pela Base dos Dados + - name: conta_bd + description: Conta - Compatibilizado pela Base dos Dados + - name: valor + description: Valor + - name: br_me_siconfi__municipio_despesas_orcamentarias + description: Tabela de despesas orçamentárias a nível de município. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - 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: estagio + description: Estágio + - name: portaria + description: Portaria + - name: conta + description: Conta + - name: estagio_bd + description: Estágio - Compatibilizado pela Base dos Dados + - name: id_conta_bd + description: ID Conta - Compatibilizado pela Base dos Dados + - name: conta_bd + description: Conta - Compatibilizado pela Base dos Dados + - name: valor + description: Valor + - name: br_me_siconfi__municipio_receitas_orcamentarias + description: Tabela de receitas orçamentárias a nível de município. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - 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: estagio + description: Estágio + - name: portaria + description: Portaria + - name: conta + description: Conta + - name: estagio_bd + description: Estágio - Compatibilizado pela Base dos Dados + - name: id_conta_bd + description: ID Conta - Compatibilizado pela Base dos Dados + - name: conta_bd + description: Conta - Compatibilizado pela Base dos Dados + - name: valor + description: Valor + - name: br_me_siconfi__uf_despesas_funcao + description: Tabela de despesas por função a nível de UF. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - name: sigla_uf + description: Sigla da unidade da federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: id_uf + description: ID da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: id_uf + - name: estagio + description: Estágio + - name: portaria + description: Portaria + - name: conta + description: Conta + - name: estagio_bd + description: Estágio - Compatibilizado pela Base dos Dados + - name: id_conta_bd + description: ID Conta - Compatibilizado pela Base dos Dados + - name: conta_bd + description: Conta - Compatibilizado pela Base dos Dados + - name: valor + description: Valor + - name: br_me_siconfi__uf_despesas_orcamentarias + description: Tabela de despesas orçamentárias a nível de UF. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - name: sigla_uf + description: Sigla da unidade da federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: id_uf + description: ID da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: id_uf + - name: estagio + description: Estágio + - name: portaria + description: Portaria + - name: conta + description: Conta + - name: estagio_bd + description: Estágio - Compatibilizado pela Base dos Dados + - name: id_conta_bd + description: ID Conta - Compatibilizado pela Base dos Dados + - name: conta_bd + description: Conta - Compatibilizado pela Base dos Dados + - name: valor + description: Valor + - name: br_me_siconfi__uf_receitas_orcamentarias + description: Tabela de receitas orçamentárias a nível de UF. + tests: + - not_null_proportion_multiple_columns: + at_least: 0.05 + columns: + - name: ano + description: Ano + - name: sigla_uf + description: Sigla da unidade da federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: sigla + - name: id_uf + description: ID da Unidade da Federação + tests: + - relationships: + to: ref('br_bd_diretorios_brasil__uf') + field: id_uf + - name: estagio + description: Estágio + - name: portaria + description: Portaria + - name: conta + description: Conta + - name: estagio_bd + description: Estágio - Compatibilizado pela Base dos Dados + - name: id_conta_bd + description: ID Conta - Compatibilizado pela Base dos Dados + - name: conta_bd + description: Conta - Compatibilizado pela Base dos Dados + - name: valor + description: Valor From cada611fa32c206efcc7e4b8cc1b528a002e6bad Mon Sep 17 00:00:00 2001 From: uiro-bi Date: Wed, 22 May 2024 15:22:40 -0300 Subject: [PATCH 2/2] feat: add not null tests to ano columns --- models/br_me_siconfi/schema.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/models/br_me_siconfi/schema.yml b/models/br_me_siconfi/schema.yml index 9cc2bc1f..04e116ec 100644 --- a/models/br_me_siconfi/schema.yml +++ b/models/br_me_siconfi/schema.yml @@ -9,6 +9,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: @@ -39,6 +40,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: @@ -73,6 +75,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: @@ -107,6 +110,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: @@ -141,6 +145,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: @@ -175,6 +180,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: @@ -209,6 +215,7 @@ models: columns: - name: ano description: Ano + test: [not_null] - name: sigla_uf description: Sigla da unidade da federação tests: