Selo de estado:
Preview(teto atual do produto) · Curso ACD-230 — Operação: orquestração, falhas e recuperação · Aula 4 de 8 · Atualizado em 2026-10-04.
Objetivo#
Ao final desta aula você vai escolher o menor escopo de recuperação que resolve a falha e confirmar na prévia o que vai rodar, sem duplicar linha no destino.
Vídeo#
Identificador no manifesto: acd-230-04-recuperar-uma-falha · duração-alvo 7 min · tela do produto: /dags.
Roteiro (5 capítulos):
| # | Minutagem-alvo | Capítulo | Rota do produto |
|---|---|---|---|
| 1 | 0:00–0:50 | Antes de recuperar: ler o log da tentativa certa. Reexecutar sem entender a causa repete a falha e gasta nuvem. | /dags/[id] |
| 2 | 0:50–2:30 | Recuperar execução e o campo Operação: os quatro escopos, do mínimo ao máximo, com a descrição de cada um na própria tela. | /dags/[id] |
| 3 | 2:30–4:00 | Tarefas selecionadas: a tarefa escolhida × todas as falhas desta execução; e a frase "incluir as tarefas seguintes (dependentes): sim/não — nunca um padrão silencioso". | /dags/[id] |
| 4 | 4:00–5:40 | A prévia: lista concreta das tarefas, miniatura do escopo, Escrita prevista e Resumo de impacto. O recorte enviado é exatamente o da prévia. | /dags/[id] |
| 5 | 5:40–7:00 | Reprocessar período: limites inclusivos em UTC, o motivo quando a opção não se aplica, e o aviso de recarga total. Os três erros do curso; o "faça você mesmo". | /sources/[id] |
Conteúdo#
A prévia corresponde ao efeito
O painel de recuperação lista as tarefas que serão executadas outra vez. Se a prévia mostra uma tarefa, ela roda; se não mostra, ela não roda. O recorte enviado ao executor é exatamente o que a prévia calculou — não uma aproximação. Conferir a prévia é o passo que separa recuperar de apostar.
O conceito: escopo é uma decisão de custo e de integridade
Reexecutar sem saber o escopo é apagar incêndio no escuro. Escopo grande demais custa nuvem que você não precisava gastar e, pior, pode duplicar no destino quando o modo de carga acrescenta sem chave. Escopo pequeno demais deixa a camada seguinte lendo dado velho. Por isso a recuperação não é um botão único: é uma escolha explícita entre quatro operações, cada uma com a sua descrição na tela.
| Escopo (rótulo da tela) | O que faz |
|---|---|
| Nova tentativa da tarefa | Roda de novo só a tarefa escolhida, como tentativa seguinte da mesma execução de origem. Não mexe em quem depende dela. |
| Reexecutar tarefa e dependentes | Roda a tarefa escolhida e todas as que leem o resultado dela — o que estava materializado a partir dela é refeito. |
| Executar o pipeline de novo | Execução nova do pipeline inteiro, sem recorte: todas as tarefas, na ordem das camadas. |
| Reprocessar período | Reextrai um intervalo de datas da origem e regrava só esse recorte no destino. |
As telas e os botões reais
Na página da execução (/dags/[id]), o botão Recuperar execução abre uma gaveta de três passos: escolher o escopo, ver o impacto, confirmar. Nada é executado no passo do escopo — nem ao abrir o painel.
No passo 1, o campo Operação traz os quatro escopos como cartões selecionáveis, com a descrição de cada um. Para os dois primeiros, aparece o bloco Tarefas selecionadas, onde você escolhe entre a tarefa que selecionou na grade e todas as falhas desta execução (N). Logo abaixo, a tela declara a consequência: "Incluir as tarefas seguintes (dependentes): sim / não — é a escolha entre as duas operações acima, nunca um padrão silencioso." Ou seja: o produto não decide por você se os dependentes entram.
Escolhido o escopo, a prévia é calculada e mostra a lista concreta das tarefas, uma miniatura do escopo no grafo, a Escrita prevista no destino e um Resumo de impacto (incluindo o impacto no BI, quando legível). Só então você confirma.
Para Reprocessar período, a tela pede Do dia (inclusive, UTC) e Até o dia (inclusive, UTC): os limites são inclusivos nos dois dias e contados em UTC — o mesmo fuso em que a agenda e o banco guardam instante. Sem período informado, a ação fica indisponível com o motivo escrito — o produto não inventa "últimos N dias" a partir da agenda. E se o pipeline não sabe recortar o intervalo, a tela exige um reconhecimento explícito: "Entendo que este pipeline NÃO sabe recortar o período: executar vai RECARREGAR a tabela inteira, e o período fica só registrado na execução." Além disso, o motor recusa reprocessar enquanto houver execução em andamento no mesmo pipeline.
"Marcar sucesso" não produz dado
Marcar uma tarefa como bem-sucedida muda o estado da execução, não o conteúdo do destino. Use apenas quando souber, por outro caminho, que o dado já está correto — nunca como forma de "resolver" uma carga que não aconteceu.
Exemplo: a Comércio Aurora
A execução das 06:00 falhou em silver:vendas_limpas por um erro de tipo na transformação; a Bronze carregou normalmente. Maria lê o log da tentativa certa, corrige a transformação e abre Recuperar execução.
Tentada por hábito, ela quase escolhe Executar o pipeline de novo — o que reextrairia a origem inteira sem necessidade. Em vez disso, ela escolhe Reexecutar tarefa e dependentes com alvo em silver:vendas_limpas: a prévia mostra duas tarefas (a Silver e a Gold que lê dela), e nenhuma tarefa Bronze. É exatamente o que ela queria: refazer o que foi materializado a partir do erro, sem tocar na extração. Ela confirma, a recuperação vira uma execução rastreável como qualquer outra, e ela confere a contagem no destino. Se tivesse escolhido Nova tentativa da tarefa, a Gold continuaria com o número antigo; se tivesse escolhido o pipeline inteiro, pagaria a extração de novo.
Erros comuns
| Sintoma | Causa provável | Próxima ação |
|---|---|---|
| Reexecutei e duplicou linhas | Escopo grande demais combinado com modo de carga que acrescenta sem chave | Prefira o escopo mínimo e revise os modos de carga |
| A prévia mostra mais tarefas do que eu esperava | Os dependentes no grafo | Escolha Nova tentativa da tarefa para o escopo mínimo |
| Gold continua com número antigo | Escopo pequeno demais: só a tarefa, sem dependentes | Use Reexecutar tarefa e dependentes |
| Reprocessar período sem efeito de recorte | Pipeline que não sabe recortar: a carga recarrega a tabela inteira | Leia e aceite o aviso consciente, ou use backfill |
| Falhou de novo pelo mesmo motivo | A causa não foi corrigida na origem | Corrija conexão, permissão ou schema antes de repetir |
| Confundi pausar com executar | Pausar a agenda não recupera nada; recuperar não liga agenda | São decisões independentes (aula 1) |
| Log não bate com o erro | Diagnóstico feito na tentativa errada | Desça execução → tarefa → tentativa (aula 2) |
Estado do produto
A recuperação é determinística: a prévia e o recorte enviado ao executor saem do mesmo cálculo, e isso é coberto por teste — a capacidade C01.4 cobre idempotência, retry, backoff, DLQ e reconciliação. O teto segue Preview: abrir a prévia custa R$ 0, mas confirmar executa e consome recursos de nuvem como qualquer execução, e não há promessa de tempo — depende do volume reprocessado. Custo faturado em BRL e latência de nuvem continuam NÃO MEDIDO.
Faça você mesmo#
No workspace de treino Aurora Varejo (abra /dags no console), como dono. Meta: reexecutar só a tarefa que falhou.
- Abra uma execução com falha e desça até a tarefa e a tentativa certa; anote a causa antes de pensar em recuperar.
- Clique em Recuperar execução. Confirme que nada foi executado só por abrir o painel.
- No campo Operação, leia as quatro descrições e escolha Nova tentativa da tarefa.
- Em Tarefas selecionadas, mantenha a tarefa que você selecionou na grade (não todas as falhas) e confira a linha que declara se os dependentes entram — ela deve dizer não.
- Leia a prévia: confirme que ela lista uma tarefa e confira a Escrita prevista e o Resumo de impacto.
- Agora troque para Reexecutar tarefa e dependentes, sem confirmar, e compare: a prévia deve crescer exatamente com as tarefas que leem o resultado da primeira.
- Volte para Nova tentativa da tarefa e confirme a recuperação. Acompanhe a execução resultante em
/dags. - Confira o destino — contagem de linhas, não só o selo verde — e verifique que nada duplicou.
Você terminou quando a prévia que você leu bater exatamente com as tarefas que rodaram, a contagem no destino estiver correta e você conseguir justificar por que escolheu esse escopo e não o pipeline inteiro.
Checagem rápida#
Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.
Documentação relacionada#
Capacidades ensinadas#
C01.4 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".