Instalação¶
O Data Pipeline Project é uma solução moderna que utiliza ferramentas como Airflow, DBT, Jupyter e Superset para orquestração, transformação, análise e visualização de dados. Este guia ajudará você a começar rapidamente.
Pré-requisitos¶
Antes de começar, certifique-se de ter os seguintes softwares instalados:
- Docker e Docker Compose: Para gerenciamento de contêineres.
- Make: Ferramenta de automação de build.
- Python 3.11: Para execução de scripts e desenvolvimento.
- Git: Controle de versão.
Caso precise de ajuda para instalar esses componentes, consulte a documentação oficial de cada ferramenta:
Instalação¶
1. Clonando o Repositório¶
Para obter o código-fonte do projeto, clone o repositório Git:
2. Configurando o Ambiente¶
Execute o comando abaixo para configurar automaticamente o ambiente de desenvolvimento:
Este comando irá:
- Criar ambientes virtuais necessários.
- Instalar dependências do projeto.
- Configurar hooks de pré-commit.
- Preparar o ambiente de desenvolvimento para execução local.
!!! note "Dica" Caso encontre problemas durante a configuração, verifique se o Docker está rodando corretamente e se você possui permissões administrativas no sistema.
Executando o Projeto Localmente¶
Após a configuração, inicialize todos os serviços com o Docker Compose:
Acessando os Componentes¶
Uma vez que os serviços estejam em execução, você pode acessar as ferramentas principais nos seguintes URLs:
- Airflow: http://localhost:8080
Login: airflow
Senha: airflow
- Jupyter: http://localhost:8888
- Superset: http://localhost:8088
Login: admin
Senha: admin
Certifique-se de que todas as portas mencionadas estejam disponíveis no seu ambiente.
Estrutura do Projeto¶
A estrutura do projeto é organizada para separar cada componente da stack, facilitando a manutenção e o desenvolvimento:
.
├── airflow_lappis
│ ├── dags
│ │ ├── data_ingest
│ │ │ ├── compras_gov
│ │ │ ├── siafi
│ │ │ ├── siape
│ │ │ ├── siorg
│ │ │ ├── tesouro_gerencial
│ │ │ └── transfere_gov
│ │ └── dbt
│ │ └── ipea
│ │ ├── cosmos_dag.py
│ │ ├── dbt_project.yml
│ │ ├── descriptions.yml
│ │ ├── macros
│ │ ├── models
│ │ │ ├── contratos_dbt
│ │ │ │ ├── bronze
│ │ │ │ ├── silver
│ │ │ │ ├── gold
│ │ │ │ └── views
│ │ │ ├── orcamento_dbt
│ │ │ │ └── bronze
│ │ │ ├── pessoas_dbt
│ │ │ │ ├── bronze
│ │ │ │ ├── silver
│ │ │ │ └── gold
│ │ │ ├── schema.yml
│ │ │ ├── sources.yml
│ │ │ └── ted_dbt
│ │ │ ├── bronze
│ │ │ ├── silver
│ │ │ ├── gold
│ │ │ └── views
│ │ ├── profiles.yml
│ │ └── snapshots
│ ├── helpers
│ ├── plugins
│ └── templates
├── docker
├── docker-compose.yml
├── Dockerfile
├── Makefile
├── pyproject.toml
├── README.md
├── requirements.txt
Essa organização modular permite que cada componente seja desenvolvido e mantido de forma independente.
Comandos Úteis no Makefile¶
O Makefile facilita a execução de tarefas repetitivas e a configuração do ambiente. Aqui estão os principais comandos disponíveis:
make setup
¶
Prepara o ambiente do projeto. Instala todas as dependências do projeto definidas no
pyproject.toml
, incluindo as dependências de desenvolvimento. Também exporta essas dependências para um arquivorequirements.txt
(útil para ambientes como Docker ou CI/CD) e executa um script de configuração de git hooks.
make format
¶
Formata o código automaticamente. Executa ferramentas de formatação para padronizar o estilo do código:
black
para código Pythonruff
para correções rápidassqlfmt
para formatar scripts SQL localizados na pastaairflow_lappis/dags/dbt
make lint
¶
Verifica a qualidade do código. Executa validações de estilo e qualidade estática:
- Verifica se o código está corretamente formatado com
black
(--check
) - Analisa problemas com
ruff
(sem corrigir) - Executa
mypy
para checar tipos estáticos - Valida formatação SQL com
sqlfmt
- Roda o
sqlfluff
(caso não esteja em ambiente CI) para validações avançadas de SQL
make test
¶
Executa os testes automatizados. Roda os testes presentes na pasta
tests/
usando o frameworkpytest
.
Configuração e Teste dos Componentes¶
Este passo a passo descreve como configurar e executar o pipeline completo, desde a ingestão de dados no Airflow até o tratamento no dbt e visualização no Superset.
1. Configurar Airflow¶
1.1 Configurar variáveis de ambiente do Airflow¶
- Acesse o airflow:
Airflow: http://localhost:8080
Login: airflow
Senha: airflow
- Após subir os containers via Docker (
docker compose up -d
), é necessário configurar as variáveis de ambiente no Airflow → Admin → Variables.
- Clique em "+" para adicionar uma nova variável de ambiente
- Adicione as duas Key & Value, uma de cada vez, e salve-as:
1- Key & Value
Key:
airflow_orgao
Value:
ipea
2- Key & Value
Key:
airflow_variables
Value: {
"ipea": {
"codigos_ug": [113601, 113602]
},
"unb": {
"codigos_ug": [154040]
},
"ibama": {
"codigos_ug": [440001, 440048, 440050]
},
"mgi": {
"codigos_ug": [201082]
}
}
1.2 Configurar banco local com o Airflow¶
- Clique em connections:
- Busque pela conexão pré configurada do postgres e clique em edit record:
- Altere apenas Host, Database, Login, Password e Porta
- Clique em
Test
para testar a conexão com o banco e depois salve!
2. Configuração do Superset com PostgreSQL¶
Para conectar o Superset ao banco PostgreSQL e visualizar os dados:
2.1 Acesse o Superset¶
- URL: http://localhost:8088
- Login:
admin
- Senha:
admin
2.2 Configure a Conexão com PostgreSQL¶
- Vá em Settings → Database Connections → + Database
- Selecione PostgreSQL na lista de bancos
- Preencha os seguintes campos:
Campo | Valor |
---|---|
Host | postgres |
Port | 5432 |
Database name | postgres |
Username | postgres |
Password | postgres |
Display Name | PostgreSQL Local |
- Clique em "Test Connection" para verificar
- Clique em "Connect" para salvar
A conexão deve funcionar perfeitamente!
2.3 Explore os Dados¶
Após conectar, você poderá: - Criar datasets baseados nas tabelas do PostgreSQL - Construir dashboards com os dados processados pelo dbt - Visualizar métricas dos contratos e outros dados governamentais
3. Rodar a DAG de contratos¶
No painel do Airflow:
- Localize a DAG
api_contratos_dag
. - Ative a DAG clicando no botão de "play"(▶️) - Trigger DAG.
- Aparecerá a cor verde escuro, indicando sucesso ao rodar a DAG.
Essa DAG fará a ingestão dos dados de contratos a partir das fontes configuradas.
4. Validar a ingestão no banco de dados¶
Após a execução da DAG, conecte-se ao banco de dados Postgres para validar se as tabelas de contratos foram populadas.
As credenciais do banco estão definidas no arquivo .env
do repositório:
A porta padrão exposta no Docker é 5432.
Comando de conexão (exemplo via psql
):
5. Ajustar a configuração do dbt¶
Antes de rodar os modelos do dbt, é necessário garantir que os arquivos de configuração apontem para o banco postgres(local) e não mais para analytics(produção).
a) Arquivo profiles.yml
¶
Deve estar assim:
ipea:
target: prod
outputs:
prod:
type: postgres
host: localhost
user: postgres
password: postgres
port: 5432
dbname: postgres
schema: ipea
b) Arquivo dbt_project.yml
¶
Altere a linha onde aparece +database: analytics
para:
c) Arquivos de snapshots¶
Nos arquivos de snapshot (tables_snapshot.yml
), troque todos os database: analytics
por database: postgres
.
Resultado arquivo snapshots
tables_snapshot.yml
snapshots:
- name: contratos_snapshot
relation: ref('contratos')
config:
schema: snapshots
database: postgres
unique_key: id
strategy: check
check_cols: [situacao, num_parcelas, valor_parcela, valor_global, valor_acumulado]
- name: faturas_snapshot
relation: ref('faturas')
config:
schema: snapshots
database: postgres
unique_key: [id, id_empenho]
strategy: check
check_cols: [situacao, valor, juros, multa, glosa]
- name: empenhos_snapshot
relation: ref('empenhos')
config:
schema: snapshots
database: postgres
unique_key: [id, contrato_id]
strategy: check
check_cols: [empenhado, aliquidar, liquidado, pago, rpinscrito, rpaliquidar, rpliquidado, rppago]
- name: cronogramas_snapshot
relation: ref('cronogramas')
config:
schema: snapshots
database: postgres
unique_key: id
strategy: check
check_cols: [valor, retroativo, observacao]
6. Testar conexão do dbt com o banco¶
No diretório do projeto dbt, navegue até o diretório airflow_lappis/dags/dbt/ipea
e rode:
Você deve ver no log algo como:
Connection:
host: localhost
port: 5432
user: postgres
database: postgres
schema: ipea
Connection test: OK connection ok
7. Rodar o modelo de contratos no dbt¶
Agora rode o modelo contratos
para iniciar o fluxo de tratamento dos dados da camada raw → bronze:
Esse comando executa apenas o modelo contratos.sql
, responsável por transformar os dados brutos em uma tabela organizada na camada bronze.
Conclusão¶
Seguindo estes passos, você terá configurado com sucesso o ambiente completo do Data Pipeline Project, incluindo:
- Airflow configurado com variáveis de ambiente e conexão ao banco de dados
- Superset conectado ao PostgreSQL para visualização de dados
- DAG de contratos executada com sucesso para ingestão de dados
- Banco Postgres validado com dados importados
- dbt configurado e rodando modelos para tratamento dos dados
- Pipeline completo funcionando da ingestão até a visualização
O ambiente está pronto para desenvolvimento e análise de dados governamentais usando as melhores práticas de engenharia de dados moderna.
Documentação Útil¶
Para aproveitar ao máximo os componentes do projeto, consulte as documentações oficiais: