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] novos diretórios #554

Merged
merged 5 commits into from
Apr 19, 2024
Merged
Show file tree
Hide file tree
Changes from 3 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
56 changes: 26 additions & 30 deletions .github/workflows/check-bq-project-name.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,34 @@
---
name: Check BQ project name
on:
workflow_dispatch:
pull_request:
paths:
- '**/*.sql'

paths: ['**/*.sql']
jobs:
check_bucket_name:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Get changed files
id: get_files
uses: dorny/paths-filter@v2
with:
list-files: shell
filters: |
pr:
- added|deleted|modified: '**'
- name: Install Python
uses: actions/setup-python@v2
with:
python-version: '3.x'

- name: Run Python script
run: |
for file in ${{ steps.get_files.outputs.pr_files }}; do
if [[ $file == *.sql ]]; then
echo "SQL file detected: $file"
python .github/workflows/scripts/check_sql_files.py $file
else
echo "Não é um arquivo SQL: $file"
fi
done
- name: Checkout code
uses: actions/checkout@v2
- name: Get changed files
id: get_files
uses: dorny/paths-filter@v2
with:
list-files: shell
filters: |
pr:
- added|deleted|modified: '**'
- name: Install Python
uses: actions/setup-python@v2
with:
python-version: 3.x
- name: Run Python script
run: |-
for file in ${{ steps.get_files.outputs.pr_files }}; do
if [[ $file == *.sql ]]; then
echo "SQL file detected: $file"
python .github/workflows/scripts/check_sql_files.py $file
else
echo "Não é um arquivo SQL: $file"
fi
done
5 changes: 3 additions & 2 deletions .github/workflows/scripts/check_sql_files.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import argparse
import os

def check_sql_files(file):
found_staging = False
if file.endswith(".sql"):
if os.path.exists(file) and file.endswith(".sql"):
with open(file, "r") as f:
lines = f.readlines()
for line in lines:
Expand All @@ -20,4 +21,4 @@ def check_sql_files(file):
if check_sql_files(args.file):
exit(1)
else:
print("No occurrences of 'basedosdados-dev' found in SQL files.")
print("No occurrences of 'basedosdados-staging' found in SQL files.")
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{{ config(alias="nomenclatura_comum_mercosul", schema="br_bd_diretorios_mundo") }}
select
safe_cast(co_ncm as string) id_ncm,
safe_cast(co_unid as string) id_unidade,
safe_cast(co_sh6 as string) id_sh6,
safe_cast(co_ppe as string) id_ppe,
safe_cast(co_ppi as string) id_ppi,
safe_cast(co_fat_agreg as string) id_fator_agregado_ncm,
safe_cast(co_cuci_item as string) id_cgce_n3,
safe_cast(co_cgce_n3 as string) id_isic_classe,
safe_cast(co_siit as string) id_exp_subset,
safe_cast(
case
when co_unid = '10'
then lower('QUILOGRAMA LIQUIDO')
when co_unid = '11'
then lower('NUMERO (UNIDADE)')
when co_unid = '12'
then lower('MILHEIRO')
when co_unid = '13'
then lower('PARES')
when co_unid = '14'
then lower('METRO')
when co_unid = '15'
then lower('METRO QUADRADO')
when co_unid = '16'
then lower('METRO CUBICO')
when co_unid = '17'
then lower('LITRO')
when co_unid = '18'
then lower('MIL QUILOWATT HORA')
when co_unid = '19'
then lower('QUILATE')
when co_unid = '20'
then lower('DUZIA')
when co_unid = '21'
then lower('TONELADA METRICA LIQUIDA')
when co_unid = '22'
then lower('GRAMA LIQUIDO')
when co_unid = '23'
then lower('BILHOES DE UNIDADES INTERNACIONAIS')
when co_unid = '24'
then lower('QUILOGRAMA BRUTO')
else lower(co_unid)
end as string
) as nome_unidade,
safe_cast(co_isic_classe as string) nome_ncm_portugues,
safe_cast(co_exp_subset as string) nome_ncm_espanhol,
safe_cast(no_ncm_por as string) nome_ncm_ingles,
from
`basedosdados-staging.br_bd_diretorios_mundo_staging.nomenclatura_comum_mercosul`
as t
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{ config(alias="sistema_harmonizado", schema="br_bd_diretorios_mundo") }}
select
safe_cast(co_sh6 as string) id_sh6,
safe_cast(co_sh4 as string) id_sh4,
safe_cast(co_sh2 as string) id_sh2,
safe_cast(co_ncm_secrom as string) id_ncm_secrom,
safe_cast(no_sh6_por as string) nome_sh6_portugues,
safe_cast(no_sh4_por as string) nome_sh4_portugues,
safe_cast(no_sh2_por as string) nome_sh2_portugues,
safe_cast(no_sec_por as string) nome_sec_portugues,
safe_cast(no_sh6_esp as string) nome_sh6_espanhol,
safe_cast(no_sh4_esp as string) nome_sh4_espanhol,
safe_cast(no_sh2_esp as string) nome_sh2_espanhol,
safe_cast(no_sec_esp as string) nome_sec_espanhol,
safe_cast(no_sh6_ing as string) nome_sh6_ingles,
safe_cast(no_sh4_ing as string) nome_sh4_ingles,
safe_cast(no_sh2_ing as string) nome_sh2_ingles,
safe_cast(no_sec_ing as string) nome_sec_ingles,
from `basedosdados-staging.br_bd_diretorios_mundo_staging.sistema_harmonizado` as t
67 changes: 67 additions & 0 deletions models/br_bd_diretorios_mundo/download_sh4_ncm.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import requests\n",
"from io import BytesIO\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"urls = {\n",
" 'ncm' : 'https://balanca.economia.gov.br/balanca/bd/tabelas/NCM.csv',\n",
" 'sh4': 'https://balanca.economia.gov.br/balanca/bd/tabelas/NCM_SH.csv'\n",
" }\n",
"\n",
"for k in urls:\n",
" print(f'Baixando tabela {k}')\n",
" \n",
" response = requests.get(urls[k], verify=False)\n",
" if response.status_code == 200:\n",
" \n",
" data = BytesIO(response.content)\n",
" df = pd.read_csv(data, encoding='latin-1', sep=';', dtype = str)\n",
" df.to_csv(\n",
" f'{k}.csv',\n",
" index=False,\n",
" encoding = 'utf-8',\n",
" sep=',', \n",
" )\n",
" else:\n",
" print(f'Erro! O status da requisição foi {response.status_code}')\n",
"\n",
" "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "bd_pipelines",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.15"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
89 changes: 89 additions & 0 deletions models/br_bd_diretorios_mundo/schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,92 @@ models:
description: Nacionalidade
- name: sigla_continente
description: Sigla do continente do país
- name: br_bd_diretorios_mundo__nomenclatura_comum_mercosul
description: A Nomenclatura Comum do Mercosul (NCM) é um sistema ordenado que
permite, pela aplicação de regras e procedimentos próprios, determinar um único
código numérico para uma dada mercadoria.
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns: [id_ncm]
- not_null_proportion_multiple_columns:
at_least: 0.0
folhesgabriel marked this conversation as resolved.
Show resolved Hide resolved
columns:
- name: id_ncm
description: Identificador da Nomenclatura Comum do Mercosul (NCM)
- name: id_unidade
description: Identificador da unidade estátisca do id_ncm
- name: id_sh6
description: Identificador de 6 dígitos do Sistema Harmonizado (SH6) relacionado
com o id_ncm
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__sistema_harmonizado')
field: id_sh6
- name: id_ppe
description: Identificador da Pauta de Produtos Exportados (PPE) do id_ncm
- name: id_ppi
description: Identificador da Pauta de Produtos Importados (PPI) do id_ncm
- name: id_fator_agregado_ncm
description: Identificadores de Fator Agregado (FA) do id_ncm
- name: id_cgce_n3
description: Identificador da Classificação por Grandes Categorias Econômicas
(CGCE) do id_ncm
- name: id_isic_classe
description: Identificador da classe da Classificação de Setores Industriais
ISIC (International Standard Industrial Classification) do id_ncm
- name: id_exp_subset
description: Não informado
- name: nome_unidade
description: Nome da unidade estatística do id_ncm
- name: nome_ncm_portugues
description: Descrição do id_ncm em português
- name: nome_ncm_espanhol
description: Descrição do id_ncm em espanhol
- name: nome_ncm_ingles
description: Descrição do id_ncm em inglês
- name: br_bd_diretorios_mundo__sistema_harmonizado
description: O "Sistema Harmonizado de Designação e de Codificação de Mercadorias",
ou simplesmente "Sistema Harmonizado", tem o objetivo maior foi a criação de
um sistema único mundial de designação e de codificação de mercadorias.
tests:
- dbt_utils.unique_combination_of_columns:
combination_of_columns: [id_sh6]
- not_null_proportion_multiple_columns:
at_least: 0.00
columns:
- name: id_sh6
description: Identificador de 6 dígitos do Sistema Harmonizado (SH6)
tests:
- relationships:
to: ref('br_bd_diretorios_brasil__nomenclatura_comum_mercosul')
field: id_sh6
- name: id_sh4
description: Identificador de 4 dígitos do Sistema Harmonizado (SH6)
- name: id_sh2
description: Identificador de 2 dígitos do Sistema Harmonizado (SH6)
- name: id_ncm_secrom
description: Não informado
- name: nome_sh6_portugues
description: Descrição do id_sh6 em português
- name: nome_sh4_portugues
description: Descrição do id_sh4 em português
- name: nome_sh2_portugues
description: Descrição do id_sh2 em português
- name: nome_sec_portugues
description: Descrição do em português
- name: nome_sh6_espanhol
description: Descrição do id_sh6 em espanhol
- name: nome_sh4_espanhol
description: Descrição do id_sh4 em espanhol
- name: nome_sh2_espanhol
description: Descrição do id_sh2 em espanhol
- name: nome_sec_espanhol
description: Descrição do em espanhol
- name: nome_sh6_ingles
description: Descrição do id_sh6 em inglês
- name: nome_sh4_ingles
description: Descrição do id_sh4 em inglês
- name: nome_sh2_ingles
description: Descrição do id_sh2 em inglês
- name: nome_sec_ingles
description: Descrição do em inglês
Loading