diff --git a/dbt_project.yml b/dbt_project.yml index 9005a053..f1877a84 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -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 diff --git a/models/br_ibge_criacao_municipios/code/br_ibge_municipios.ipynb b/models/br_ibge_criacao_municipios/code/br_ibge_municipios.ipynb new file mode 100644 index 00000000..119105ca --- /dev/null +++ b/models/br_ibge_criacao_municipios/code/br_ibge_municipios.ipynb @@ -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} diff --git a/models/br_ibge_criacao_municipios/dados.sql b/models/br_ibge_criacao_municipios/dados.sql new file mode 100644 index 00000000..2e2971b9 --- /dev/null +++ b/models/br_ibge_criacao_municipios/dados.sql @@ -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 +JOIN `basedosdados.br_bd_diretorios_brasil.municipio` AS t2 +ON t1.id_municipio_origem = t2.id_municipio \ No newline at end of file diff --git a/models/br_ibge_criacao_municipios/schema.yml b/models/br_ibge_criacao_municipios/schema.yml new file mode 100644 index 00000000..c14f9f5a --- /dev/null +++ b/models/br_ibge_criacao_municipios/schema.yml @@ -0,0 +1,20 @@ +version: 2 + +models: + - name: dados + description: Dados sobre Criação de municípios brasileiros bem como os munícipios originários + 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 + - 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 \ No newline at end of file