Framework fastETL, moderno, versátil, faz quase tudo.
This text is also available in English: 🇬🇧README.md.
O FastETL é um pacote de plugins do Airflow para construção de pipelines de dados para uma variedade de cenários comuns.
Principais funcionalidades:
- Replicação de tabelas full ou incremental em bancos de dados SQL Server, Postgres e MySQL
- Carga de dados a partir do GSheets e de planilhas na rede Samba/Windows
- Extração de CSV a partir do SQL
- Limpeza de dados usando tasks customizadas de patch de dados (ex.: para coordenadas geográficas sujas, mapear valores canônicos em colunas, etc.)
- Consulta à API do Diário Oficial da União (DOU)
- Usar um serviço Open Street Routing Machine para calcular distâncias de rotas
- Usar a API do CKAN ou do dados.gov.br para atualizar os metadados de um dataset
- Usar Frictionless Tabular Data Packages para escrever dicionários de dados no formato OpenDocument Text
Este framework é mantido por uma rede de desenvolvedores de diversas equipes do Ministério da Gestão e da Inovação em Serviços Públicos e é o resultado acumulado da utilização do Apache Airflow, uma ferramenta livre de código aberto, a partir de 2019.
Para governo: O fastETL é utilizado largamente para replicação de dados acessados via Quartzo (DaaS) do Serpro.
O FastETL implementa os padrões de plugins do Airflow e para ser
instalado, simplesmente adicione o pacote
apache-airflow-providers-fastetl
às suas dependências Python em seu
ambiente Airflow.
Ou instale-o com
pip install apache-airflow-providers-fastetl
Para ver um exemplo de container do Apache Airflow que usa o FastETL, confira o repositório airflow2-docker.
A suíte de testes usa contêineres Docker para simular um ambiente completo de uso, inclusive com o Airflow e os bancos de dados. Por isso, para executar os testes, é necessário primeiro instalar o Docker e o docker-compose.
Para quem usa Ubuntu 20.04, basta digitar no terminal:
snap install docker
Para outras versões e sistemas operacionais, consulte a documentação oficial do Docker.
Para construir os contêineres:
make setup
Para rodar os testes execute:
make setup && make tests
Para desmontar o ambiente execute:
make down
A principal funcionalidade do FastETL é o operador
DbToDbOperator
. Ele copia dados entre os bancos postgres
e
mssql
. O MySQL também é suportado como fonte.
Aqui um exemplo:
from datetime import datetime
from airflow import DAG
from fastetl.operators.db_to_db_operator import DbToDbOperator
default_args = {
"start_date": datetime(2023, 4, 1),
}
dag = DAG(
"copy_db_to_db_example",
default_args=default_args,
schedule_interval=None,
)
t0 = DbToDbOperator(
task_id="copy_data",
source={
"conn_id": airflow_source_conn_id,
"schema": source_schema,
"table": table_name,
},
destination={
"conn_id": airflow_dest_conn_id,
"schema": dest_schema,
"table": table_name,
},
destination_truncate=True,
copy_table_comments=True,
chunksize=10000,
dag=dag,
)
Mais detalhes sobre os parâmetros e funcionamento do DbToDbOperator
nos arquivos:
A escrever no documento CONTRIBUTING.md
(issue
#4).