Data Pipeline

Lakehouse

Apresentaçã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)

  1. O que é um data pipeline?
  2. Qual a diferença entre ETL e ELT?
  3. Quando usarias ETL em vez de ELT?
  4. O que é um DAG?
  5. O que é idempotência num pipeline?
  6. O que é um backfill?
  7. Como desenharias um pipeline resiliente?
  8. Como garantir qualidade de dados num pipeline?
  9. Como lidar com falhas numa pipeline?
  10. 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.