Marcas d’água e preenchimento.
As marcas d'água persistem no progresso incremental. As janelas de preenchimento e recuperação permitem que os usuários processem intervalos históricos sem editar manualmente o estado.
Marcas d'água simples e compostas
- YAML
- Python
watermark_columns: [updated_at]
dedup_order_expr: "updated_at DESC NULLS LAST"
result = ingest(
...,
watermark_columns=["updated_at"],
dedup_order_expr="updated_at DESC NULLS LAST",
)
- YAML
- Python
watermark_columns: [event_date, event_sequence]
dedup_order_expr: "event_date DESC NULLS LAST, event_sequence DESC NULLS LAST"
result = ingest(
...,
watermark_columns=["event_date", "event_sequence"],
dedup_order_expr="event_date DESC NULLS LAST, event_sequence DESC NULLS LAST",
)
Comportamento estatal
- O estado anterior é carregado de
ctrl_ingestion_state. - O filtro de marca d'água é aplicado antes da gravação.
- A marca d'água atual é calculada após preparação e qualidade.
- O estado não é avançado para execuções com falha ou ignoradas.
- Os valores da marca d'água são codificados com informações de tipo para preservar as comparações.
Preencher janelas
- YAML
- Python
execution:
window:
column: updated_at
start: "2026-01-01T00:00:00Z"
end: "2026-02-01T00:00:00Z"
interval: 1 day
label_format: "%Y-%m-%d"
result = ingest(
...,
execution={
"window": {
"column": "updated_at",
"start": "2026-01-01T00:00:00Z",
"end": "2026-02-01T00:00:00Z",
"interval": "1 day",
"label_format": "%Y-%m-%d",
}
},
)
Recuperação do estado
Catchup usa a marca d'água salva como ponto inicial quando nenhum início explícito é fornecido. Cada janela gerada torna-se uma execução filha com seu próprio sufixo de idempotência.
execution:
catchup:
enabled: true
column: updated_at
end: "2026-05-01T00:00:00Z"
interval: 1 day
Os modos de instantâneo não são incrementais
Não combine snapshot_reconcile_soft_delete com marcas d’água ou filtros. É necessário um instantâneo completo para saber quais chaves desapareceram.