Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dbt] br_ibge_criacao_municipios #205

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,9 @@ models:
br_ibge_censo_demografico:
+materialized: table
+schema: br_ibge_censo_demografico
br_ibge_criacao_municipios:
+materialized: table
+schema: br_ibge_criacao_municipios
br_ibge_inpc:
+materialized: table
+schema: br_ibge_inpc
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"cells":[{"cell_type":"code","execution_count":null,"metadata":{"id":"j7UvrV9zsT5T"},"outputs":[],"source":["#conecta com o seu Drive\n","from google.colab import drive\n","drive.mount('/content/drive')"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ktLR54zesc5O"},"outputs":[],"source":["import os\n","import pandas as pd\n","from datetime import datetime\n","import numpy as np\n","\n","# colocar o arquivo dentro da pasta input criada\n","INPUT_PATH = \"/content/input/\"\n","OUTPUT_PATH = \"/content/output/\"\n","\n","\n","def get_clean_data():\n"," df = get_df()\n"," df = clean_data(df)\n"," df = get_pivot_df(df)\n"," df.to_csv(OUTPUT_PATH + \"br_ibge_municipios.csv\", index=False)\n","\n","def get_df():\n"," excel_files = sorted(os.listdir(INPUT_PATH))\n"," excel_files = [INPUT_PATH + x for x in excel_files]\n","\n"," dfs = map(lambda x: pd.read_excel(x, dtype = 'string'), excel_files)\n"," df = pd.concat(dfs, axis=0)\n","\n"," return df\n","\n","def get_pivot_df(df):\n","\n"," # Usando a função melt para reorganizar as colunas de origem\n"," id_vars_name = ['id_municipio_criado','nome_municipio_criado','lei','data_criacao',\n"," 'data_instalacao']\n"," value_vars_name =['id_municipio_origem_1', 'id_municipio_origem_2', 'id_municipio_origem_3',\n"," 'id_municipio_origem_4','id_municipio_origem_5', 'id_municipio_origem_6',\n"," 'id_municipio_origem_7', 'id_municipio_origem_8']\n","\n"," melted_df = pd.melt(df, id_vars = id_vars_name, value_vars = value_vars_name, value_name='id_municipio_origem')\n","\n"," # Removendo coluna 'variable'\n"," melted_df.drop('variable', axis=1, inplace=True)\n","\n"," # Excluir as linhas com zero no id do município de origem\n"," indice = melted_df[melted_df['id_municipio_origem'] == \"0\" ].index\n"," melted_df.drop(indice, inplace = True)\n","\n"," df = melted_df\n","\n"," return df\n","\n","def clean_data(df: pd.DataFrame):\n","\n"," ################\n"," # Drop Columns #\n"," ################\n","\n"," df = df.drop(\n"," columns=['UF', 'NOME_UF', 'MUNIC']\n"," )\n","\n","\n"," #################################\n"," # Rename and insert new columns #\n"," #################################\n","\n"," # Rename\n"," df = df.rename(columns={\n"," 'UF_MUNIC':'id_municipio_criado',\n"," 'Nome_Município':'nome_municipio_criado',\n"," 'LEI':'lei',\n"," 'DTCRIACAO':'data_criacao',\n"," 'DTINSTALA':'data_instalacao',\n"," 'PROV1':'id_municipio_origem_1',\n"," 'NOME_PROV1':'nome_municipio_origem_1',\n"," 'PROV2':'id_municipio_origem_2',\n"," 'NOME_PROV2':'nome_municipio_origem_2',\n"," 'PROV3':'id_municipio_origem_3',\n"," 'NOME_PROV3':'nome_municipio_origem_3',\n"," 'PROV4':'id_municipio_origem_4',\n"," 'NOME_PROV4':'nome_municipio_origem_4',\n"," 'PROV5':'id_municipio_origem_5',\n"," 'NOME_PROV5':'nome_municipio_origem_5',\n"," 'PROV6':'id_municipio_origem_6',\n"," 'NOME_PROV6':'nome_municipio_origem_6',\n"," 'PROV7':'id_municipio_origem_7',\n"," 'NOME_PROV7':'nome_municipio_origem_7',\n"," 'PROV8':'id_municipio_origem_8',\n"," 'NOME_PROV8':'nome_municipio_origem_8'\n"," })\n","\n"," ###################\n"," # Type of columns #\n"," ###################\n","\n"," # Convert pandas multiple columns to Datetime\n"," df[['data_criacao','data_instalacao']] = df[['data_criacao','data_instalacao']].apply(pd.to_datetime, errors='coerce')\n","\n"," # ###################\n"," # # Reorder columns #\n"," # ###################\n"," # col_order = [\n"," # \"id_municipio_criado\",\n"," # \"nome_municipio_criado\",\n"," # \"lei\",\n"," # \"data_criacao\",\n"," # \"data_instalacao\",\n"," # \"id_municipio_origem\",\n"," # \"nome_municipio_origem\"\n"," # ]\n"," # assert len(df.columns) == len(col_order)\n"," # df = df[col_order]\n","\n"," return df"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"l0bAAJCTsrdW"},"outputs":[],"source":["get_clean_data()"]}],"metadata":{"colab":{"authorship_tag":"ABX9TyOl9XsUTOnpB0J4Etq9lmov","provenance":[]},"kernelspec":{"display_name":"Python 3","name":"python3"},"language_info":{"name":"python"}},"nbformat":4,"nbformat_minor":0}
11 changes: 11 additions & 0 deletions models/br_ibge_criacao_municipios/dados.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
SELECT
t1.id_municipio_criado,
t1.nome_municipio_criado,
t1.id_municipio_origem,
t2.nome AS nome_municipio_origem,
t1.lei,
safe_cast(t1.data_criacao AS date) AS data_criacao,
safe_cast(t1.data_instalacao AS date) AS data_instalacao,
FROM `basedosdados-staging.br_ibge_criacao_municipios_staging.dados` AS t1
laura-l-amaral marked this conversation as resolved.
Show resolved Hide resolved
JOIN `basedosdados.br_bd_diretorios_brasil.municipio` AS t2
ON t1.id_municipio_origem = t2.id_municipio
20 changes: 20 additions & 0 deletions models/br_ibge_criacao_municipios/schema.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: 2

models:
- name: dados
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dar nome mais significativo para a tabela

description: Dados sobre Criação de municípios brasileiros bem como os munícipios originários
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remover maiuscula de 'Criação'

columns:
- name: id_municipio_criado
description: ID Município criado - IBGE 7 Dígitos
- name: nome_municipio_criado
description: Nome do município de criado
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"de criado" não faz muito sentido

- name: id_municipio_origem
description: 'ID Município de origem - IBGE 7 Dígitos '
- name: nome_municipio_origem
description: Nome do município de origem
- name: lei
description: Lei da criação do município
- name: data_criacao
description: Data que foi criado o município
- name: data_instalacao
description: Data que foi efetivamente instalado
Loading