Data Pipeline
LakehouseApresentação
🔥 BLOCO 2 - 🚀 Data Pipeline
1️⃣ O que é um Data Pipeline
Um data pipeline é um sistema que move e transforma dados de uma origem para um destino.
Fluxo típico:
Sources
↓
Ingestion
↓
Processing / Transformation
↓
Storage
↓
Analytics / BI / ML
Exemplo real:
App logs
↓
Kafka
↓
Spark processing
↓
Data Lake
↓
Warehouse
↓
Dashboards
Objetivo de um pipeline:
- mover dados
- transformar dados
- garantir qualidade
- disponibilizar dados para analytics
2️⃣ ETL vs ELT
Este tema aparece muito em entrevistas.
ETL
Extract → Transform → Load
Source
↓
Transform
↓
Warehouse
Transformação acontece antes de carregar.
Exemplo:
CSV files
↓
Python transformation
↓
Load into warehouse
Problemas:
- pouco escalável
- duplicação de dados
- pipelines complexos
ELT (mais moderno)
Extract → Load → Transform
Source
↓
Load raw data
↓
Transform inside warehouse
Exemplo:
API
↓
Load to BigQuery
↓
Transform with dbt
Vantagens:
- escalável
- mantém dados brutos
- warehouse faz o compute
O que dizer na entrevista
Modern data platforms tend to use ELT because storage is cheap and compute engines like Spark or BigQuery can handle large transformations efficiently.
3️⃣ Componentes de um pipeline moderno
Um pipeline normalmente tem 5 camadas.
1 — Data Sources
Exemplos:
- databases
- APIs
- event streams
- files
- applications
2 — Ingestion
Responsável por trazer dados.
Pode ser:
Batch
- daily ingestion
- hourly ingestion
Streaming
- real-time events
- IoT
- logs
Ferramentas comuns:
- Kafka
- PubSub
- Kinesis
- Dataflow
- Spark streaming
3 — Storage
Dados são guardados.
Normalmente:
- Data Lake
- Warehouse
Formatos comuns:
- Parquet
- Delta
- Iceberg
4 — Processing
Transformação de dados.
Ferramentas comuns:
- Spark
- dbt
- Python
- SQL
5 — Serving
Dados ficam disponíveis para:
- BI dashboards
- analytics
- ML models
- APIs
4️⃣ Orquestração (muito importante)
Orquestração controla quando e como pipelines correm.
Exemplo:
pipeline A
↓
pipeline B
↓
pipeline C
Ferramentas:
- Airflow
- Prefect
- Dagster
- Argo
Tu já usas: Cloud Composer (Airflow)
DAG (Directed Acyclic Graph)
Pipelines são definidos como DAGs.
Exemplo:
extract
↓
transform
↓
load
Airflow exemplo:
with DAG("pipeline") as dag:
extract = PythonOperator(...)
transform = PythonOperator(...)
load = PythonOperator(...)
extract >> transform >> load
5️⃣ Conceitos muito importantes
Idempotência
Pipeline pode correr várias vezes sem alterar o resultado final.
Exemplo: Se pipeline falhar a meio, podes correr novamente.
Exemplo não idempotente:
INSERT INTO table
Se correr duas vezes → duplicados.
Exemplo idempotente:
- MERGE
- UPSERT
- overwrite partition
Backfill
Executar pipeline para dados históricos.
Exemplo: Pipeline corre diariamente mas queres processar dados de:
- 2023-01-01
- 2023-01-02
- 2023-01-03
Retry logic
Pipelines devem lidar com falhas.
Exemplo:
- API failure
- network error
- temporary database failure
Airflow exemplo:
retries=3
retry_delay=5 minutes
Monitoring
Saber se pipelines falharam.
Ferramentas:
- Airflow UI
- Datadog
- Prometheus
- alerts
6️⃣ Boas práticas de pipelines
Modular pipelines
Separar:
- ingestion
- transformations
- serving
Logging
Guardar logs claros.
Exemplo:
- rows processed
- execution time
- errors
Schema evolution
Dados mudam com o tempo.
Pipeline deve suportar:
- new columns
- missing columns
- type changes
Data validation
Verificar dados antes de usar.
Exemplo:
- no null ids
- valid dates
- positive values
7️⃣ Problemas reais de pipelines
Estes aparecem muito em entrevistas.
Pipeline falha frequentemente
Possíveis causas:
- network instability
- API rate limits
- bad error handling
Solução:
- retries
- exponential backoff
- better logging
Dados duplicados
Causas:
- pipeline runs twice
- bad ingestion logic
Solução:
- deduplication
- upserts
- primary keys
Dados inconsistentes
Causas:
- schema changes
- partial ingestion
Solução:
- schema validation
- data contracts
8️⃣ Perguntas de entrevista (treina estas)
- O que é um data pipeline?
- Qual a diferença entre ETL e ELT?
- Quando usarias ETL em vez de ELT?
- O que é um DAG?
- O que é idempotência num pipeline?
- O que é um backfill?
- Como desenharias um pipeline resiliente?
- Como garantir qualidade de dados num pipeline?
- Como lidar com falhas numa pipeline?
- Como desenharias um pipeline para ingestão diária de dados de uma API?
🧠 Exercício rápido (excelente para entrevista)
Tenta responder:
Tens uma API que fornece vendas. Queremos carregar dados diariamente para um data warehouse.
Como desenharias o pipeline?
Fluxo esperado:
API
↓
ingestion script
↓
store raw data
↓
transform
↓
warehouse tables
Perguntas
Sem perguntas. Clica em Editar para adicionar.