-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into staging/agencia
- Loading branch information
Showing
10 changed files
with
197 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
models/br_inep_censo_escolar/br_inep_censo_escolar__dicionario.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
...nep_indicador_nivel_socioeconomico/br_inep_indicador_nivel_socioeconomico__dicionario.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
{{ config(alias="transferencia", schema="br_me_sic") }} | ||
select | ||
safe_cast(ano as int64) ano, | ||
safe_cast(mes as int64) mes, | ||
safe_cast(id_esfera_orcamentaria as string) id_esfera_orcamentaria, | ||
safe_cast(nome_esfera_orcamentaria as string) nome_esfera_orcamentaria, | ||
safe_cast(id_natureza_juridica as string) id_natureza_juridica, | ||
safe_cast(nome_natureza_juridica as string) nome_natureza_juridica, | ||
safe_cast(id_resultado_primario as string) id_resultado_primario, | ||
safe_cast(nome_resultado_primario as string) nome_resultado_primario, | ||
safe_cast( | ||
id_unidade_organizacional_nivel_0 as string | ||
) id_unidade_organizacional_nivel_0, | ||
safe_cast( | ||
nome_unidade_organizacional_nivel_0 as string | ||
) nome_unidade_organizacional_nivel_0, | ||
safe_cast( | ||
id_unidade_organizacional_nivel_1 as string | ||
) id_unidade_organizacional_nivel_1, | ||
safe_cast( | ||
nome_unidade_organizacional_nivel_1 as string | ||
) nome_unidade_organizacional_nivel_1, | ||
safe_cast( | ||
id_unidade_organizacional_nivel_2 as string | ||
) id_unidade_organizacional_nivel_2, | ||
safe_cast( | ||
nome_unidade_organizacional_nivel_2 as string | ||
) nome_unidade_organizacional_nivel_2, | ||
safe_cast( | ||
id_unidade_organizacional_nivel_3 as string | ||
) id_unidade_organizacional_nivel_3, | ||
safe_cast( | ||
nome_unidade_organizacional_nivel_3 as string | ||
) nome_unidade_organizacional_nivel_3, | ||
safe_cast(valor_custo_transferencia as float64) valor_custo_transferencia, | ||
from `basedosdados-staging.br_me_sic_staging.transferencia` as t |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# Importing | ||
import requests | ||
import json | ||
import pandas as pd | ||
import datetime | ||
import os | ||
import numpy as np | ||
import string | ||
import basedosdados as bd | ||
|
||
output = "transferencia/output/" | ||
# Download | ||
todays_year = datetime.date.today().year; | ||
year_range = list(range(2015,todays_year+1)); | ||
year_range = [str(x)for x in year_range]; | ||
first_time_flag = True; | ||
# API retorna no máximo 250 observações, utilizando a segmentação abaixo a maior categoria (ano, mês, | ||
# natureza jurídica) tem 194 observações. É uma margem segura? Se não repensar como fazer | ||
api_response = requests.get('https://apidatalake.tesouro.gov.br/ords/custos/tt/transferencias?ano=2020&mes=10&natureza_juridica=3').text; | ||
|
||
transf_dict = json.loads(api_response); | ||
transferencia_esp = pd.json_normalize(transf_dict['items']); | ||
for ano in [str(x)for x in list(range(2015,todays_year+1))]: | ||
for mes in [str(x)for x in list(range(1,13))]: | ||
for natur in [str(x)for x in list(range(1,7))]: | ||
api_response = requests.get('https://apidatalake.tesouro.gov.br/ords/custos/tt/transferencias?ano='+ano+'&mes='+mes+'&natureza_juridica='+natur).text; | ||
|
||
transf_dict = json.loads(api_response); | ||
transferencia_esp = pd.json_normalize(transf_dict['items']); | ||
|
||
# Renomear variáveis com nomes inadequados | ||
transferencia_esp = transferencia_esp.rename(columns={ | ||
'an_lanc': 'ano_lancamento', | ||
'me_lanc': 'mes_lancamento', | ||
'ds_organizacao_n0': 'nome_unidade_organizacional_nivel_0', | ||
'ds_organizacao_n1': 'nome_unidade_organizacional_nivel_1', | ||
'ds_organizacao_n2': 'nome_unidade_organizacional_nivel_2', | ||
'ds_organizacao_n3': 'nome_unidade_organizacional_nivel_3', | ||
'co_organizacao_n0': 'id_unidade_organizacional_nivel_0', | ||
'co_organizacao_n1': 'id_unidade_organizacional_nivel_1', | ||
'co_organizacao_n2': 'id_unidade_organizacional_nivel_2', | ||
'co_organizacao_n3': 'id_unidade_organizacional_nivel_3', | ||
'co_natureza_juridica': 'id_natureza_juridica', | ||
'ds_natureza_juridica': 'nome_natureza_juridica', | ||
'co_esfera_orcamentaria': 'id_esfera_orcamentaria', | ||
'ds_esfera_orcamentaria': 'nome_esfera_orcamentaria', | ||
'co_modalidade_aplicacao':'id_modalidade_aplicacao', | ||
'ds_modalidade_aplicacao':'nome_modalidade_aplicacao', | ||
'co_resultado_eof': 'id_resultado_primario', | ||
'ds_resultado_eof': 'nome_resultado_primario', | ||
'va_custo_transferencias':'valor_custo_transferencia'}); | ||
if len(transferencia_esp) == 250: | ||
raise Exception('Single request reached 250 observations, the maximum allowed by the Tesouro API. Probably missing data, code fix needed'); | ||
|
||
if first_time_flag: | ||
transferencia = transferencia_esp | ||
first_time_flag = False; | ||
else: | ||
transferencia = pd.concat([transferencia, transferencia_esp],axis=0); | ||
|
||
# Remover 0s iniciais | ||
|
||
id_idx = [col.startswith('id') for col in list(transferencia.columns.values)] | ||
|
||
transferencia.loc[:,id_idx] = transferencia.loc[:,id_idx].astype(int).astype(str) | ||
|
||
transferencia = transferencia[['ano_lancamento', | ||
'mes_lancamento', | ||
'id_unidade_organizacional_nivel_0', | ||
'nome_unidade_organizacional_nivel_0', | ||
'id_unidade_organizacional_nivel_1', | ||
'nome_unidade_organizacional_nivel_1', | ||
'id_unidade_organizacional_nivel_2', | ||
'nome_unidade_organizacional_nivel_2', | ||
'id_unidade_organizacional_nivel_3', | ||
'nome_unidade_organizacional_nivel_3', | ||
'id_natureza_juridica', | ||
'nome_natureza_juridica', | ||
'id_esfera_orcamentaria', | ||
'nome_esfera_orcamentaria', | ||
'id_resultado_primario', | ||
'nome_resultado_primario', | ||
'valor_custo_transferencia']] | ||
|
||
# Cria as partições e coloca os arquivos respectivos dentro delas | ||
|
||
for ano in [*range(2015, todays_year+1)]: | ||
for mes in [*range(1, 13)]: | ||
particao = output + f'transferencia/ano={ano}/mes={mes}' | ||
if not os.path.exists(particao): | ||
os.makedirs(particao) | ||
for ano in [*range(2015, todays_year+1)]: | ||
for mes in [*range(1, 13)]: | ||
df_particao = transferencia[transferencia['ano_lancamento'] == ano].copy() # O .copy não é necessário é apenas uma boa prática | ||
df_particao = df_particao[df_particao['mes_lancamento'] == mes] | ||
df_particao.drop(['ano_lancamento', 'mes_lancamento'], axis=1, inplace=True) # É preciso excluir as colunas utilizadas para partição | ||
particao = output + f'transferencia/ano={ano}/mes={mes}/transferencia.csv' | ||
df_particao.to_csv(particao, index=False, encoding='utf-8', na_rep='') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,63 @@ | ||
--- | ||
version: 2 | ||
models: | ||
- name: br_me_sic__dicionario | ||
description: Dicionário para tradução dos códigos do conjunto br_me_sic. Para | ||
taduzir códigos compartilhados entre instituições, como id_municipio, buscar | ||
por diretórios | ||
- name: br_me_sic__transferencia | ||
description: A tabela contém dados sobre custos com transferências a estados e | ||
municípios do Governo Federal. Por meio desses dados é possível estudar, por | ||
exemplo, o nível de envolvimento e a importância das diversas unidades organizacionais | ||
governamentais nessas operações. | ||
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.05 | ||
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 | ||
- name: ano | ||
description: Ano do lançamento contábil | ||
tests: | ||
- relationships: | ||
to: ref('br_bd_diretorios_data_tempo__ano') | ||
field: ano.ano | ||
- name: mes | ||
description: Mês do lançamento contábil | ||
tests: | ||
- relationships: | ||
to: ref('br_bd_diretorios_data_tempo__mes') | ||
field: mes.mes | ||
- name: id_esfera_orcamentaria | ||
description: Código da esfera orçamentária do custo | ||
- name: nome_esfera_orcamentaria | ||
description: Nome da esfera orçamentária do custo | ||
- name: id_natureza_juridica | ||
description: Código da natureza jurídica do Órgão | ||
- name: id_resultado_primario | ||
description: Código da classificação da despesa orçamentária por indicador | ||
de resultado primário | ||
- name: nome_resultado_primario | ||
description: Nome da classificação da despesa orçamentária por indicador de | ||
resultado primário | ||
- name: id_unidade_organizacional_nivel_0 | ||
description: Código da Unidade organizacional um nível acima dos Ministérios | ||
e da AGU, conforme codificação SIORG | ||
- name: nome_unidade_organizacional_nivel_0 | ||
description: Nome da Unidade organizacional um nível acima dos Ministérios | ||
e da AGU, conforme codificação SIORG | ||
- name: id_unidade_organizacional_nivel_1 | ||
description: Código da Unidade organizacional no nível dos Ministérios e da | ||
AGU, conforme codificação SIORG | ||
- name: nome_unidade_organizacional_nivel_1 | ||
description: Nome da Unidade organizacional no nível dos Ministérios e da | ||
AGU, conforme codificação SIORG | ||
- name: id_unidade_organizacional_nivel_2 | ||
description: Código da Unidade organizacional a um nível abaixo dos Ministérios | ||
e da AGU, conforme codificação SIORG | ||
- name: nome_unidade_organizacional_nivel_2 | ||
description: Nome da Unidade organizacional a um nível abaixo dos Ministérios | ||
e da AGU, conforme codificação SIORG | ||
- name: id_unidade_organizacional_nivel_3 | ||
description: Código da Unidade organizacional a dois níveis abaixo dos Ministérios | ||
e da AGU, conforme codificação SIORG | ||
- name: nome_unidade_organizacional_nivel_3 | ||
description: Nome da Unidade organizacional a dois níveis abaixo dos Ministérios | ||
e da AGU, conforme codificação SIORG | ||
- name: valor_custo_transferencia | ||
description: Valor do custo com transferências | ||
tests: [not_null] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters