Um pipeline de dados é um conjunto de etapas automatizadas que movem, transformam e carregam dados de uma ou mais fontes para um destino, tornando-os utilizáveis para análise ou outros sistemas.
ETL vs. ELT
| ETL | ELT | |
|---|---|---|
| Ordem | Extract → Transform → Load | Extract → Load → Transform |
| Onde transforma | Fora do destino (ferramenta dedicada) | Dentro do destino (ex: Snowflake, BigQuery) |
| Quando usar | Destinos com capacidade limitada, dados sensíveis que precisam ser mascarados antes do carregamento | Data warehouses/lakehouses modernos com poder de processamento próprio |
| Exemplos | Talend, Informatica, SSIS | dbt + Snowflake, Spark + Delta Lake |
O padrão dominante hoje é ELT: carregue os dados brutos primeiro (camada Bronze) e transforme dentro da plataforma de dados, onde o poder computacional é escalável.
Batch vs. Streaming
Batch
- Processa um conjunto acumulado de dados em intervalos fixos (de minutos a dias)
- Mais simples de implementar, depurar e re-executar
- Adequado quando a latência não é crítica (relatórios diários, DW atualizado à noite)
flowchart LR F([Fonte]) --> A[Acumula dados] --> J[Job processa lote] --> D([Destino atualizado])
Streaming
- Processa eventos individualmente à medida que chegam (latência de milissegundos a segundos)
- Mais complexo: requer gestão de estado, tratamento de eventos fora de ordem, exactly-once semantics
- Adequado para fraude em tempo real, recomendações instantâneas, dashboards ao vivo
flowchart LR F([Fonte]) --> E[Evento] --> K[Tópico Kafka] --> C[Consumer processa] --> D([Destino atualizado])
Anatomia de um pipeline moderno
flowchart LR subgraph Fontes O[Banco OLTP] A[API REST] K[Kafka topics] end subgraph Ingestão I[Fivetran / Airbyte] SS[Spark Structured - Streaming] end subgraph Armazenamento DL[(Data Lake - Bronze)] end subgraph Transformação T[dbt / Spark - Silver / Gold] end subgraph Serving S[DW / BI - Analytics] end O & A --> I K --> SS I & SS --> DL DL --> T --> S
Qualidade de dados no pipeline
Pontos críticos onde validar:
- Na ingestão: schema esperado, campos obrigatórios, valores fora de range
- Após transformação: contagem de linhas, unicidade de chaves, nulos inesperados
- No destino: freshness (dado está atualizado?), consistência entre tabelas
Ferramentas: Great Expectations, dbt tests, Soda
Orquestração
Pipelines precisam ser agendados, monitorados e re-executados em falha. Isso é papel das ferramentas de orquestração. Ver ferramentas-engenharia-dados.
Python no pipeline
Python é a linguagem central para implementar pipelines. Bibliotecas por função:
- Transformação em memória: Pandas / Polars
- Transformação distribuída: PySpark
- Validação de dados: Great Expectations, Pandera, Pydantic
- Conexão com bancos: SQLAlchemy, psycopg2
Ver também: engenharia-de-dados | arquitetura-medalhao | big-data | ferramentas-engenharia-dados | python-engenharia-dados | mermaid-diagrams