DAG Idempotente e Backfill no Airflow
Torne uma DAG do Airflow realmente idempotente e gere um runbook de backfill seguro e retomável.
Por Os Melhores Prompts
Categoria: Engenharia de dados
O que ele faz
Audita cada task quanto à idempotência e aponta a linha ou comportamento exato que a torna insegura — append sem delete, janela derivada de datetime.now() em vez do data interval, chamada externa sem idempotency key. Devolve um esqueleto de DAG corrigido em Python mostrando o uso de data_interval_start/end, delete-then-insert por partição ou MERGE, retries com backoff exponencial e max_active_runs e pools explícitos. O runbook de backfill cobre tamanho do chunk, limite de concorrência, quais downstreams pausar e como abortar no meio sem deixar partições parciais, mais uma query de verificação provando que o re-run gerou saída idêntica.
Use quando
- Um backfill que já contou receita em dobro
- Tasks que usam datetime.now() dentro da transformação
- Rodar a DAG de novo e obter contagens diferentes
- Registros atrasados caindo em uma partição antiga
O que você recebe
- Veredito de idempotência por task com a linha insegura
- Esqueleto de DAG corrigido usando data_interval
- Runbook de backfill: chunk, concorrência, aborto
- Janela de reprocessamento para dados atrasados
- Query de verificação com contagem e checksum por partição
Como usar
- Informe {{airflow_version}} e o executor.
- Descreva fontes, transformações, destinos e chamadas externas em {{pipeline_description}}.
- Preencha {{data_partitioning}} com coluna de partição, grão, janela de dados atrasados em horas, timezone e se a fonte é append-only ou mutável.
- Informe schedule, SLA e dependências acima e abaixo em {{sla_and_dependencies}}, e cole o código atual em {{current_dag_code}}.
- Diga se o destino suporta substituição atômica de partição (Iceberg, Delta, partition decorators do BigQuery) — é isso que decide entre delete-then-insert, MERGE e troca por staging.
Tags: apache-airflow, airflow, idempotency, backfill, orchestration, data-pipeline, taskflow
Preço: 10.00 BRL