Mesclar estratégias.
upsert oferece suporte a diferentes estratégias para tabelas de estado atual. Escolha a estratégia que corresponda à integridade da fonte e à segurança da partição.
Comparação de estratégias
| Estratégia | Usar quando | Risco |
|---|---|---|
delta | Mesclagem genérica baseada em chave. | Pode verificar mais dados de destino em tabelas grandes. |
delta_by_partition | A mesclagem pode restringir com segurança as partições de destino. | Requer merge_partition_column correto. |
replace_partitions | A origem está completa para as partições que estão sendo substituídas. | Perda de dados se a integridade da fonte estiver errada. |
replace_partitions é implementado com SQL Databricks INSERT INTO ... REPLACE WHERE ... SELECT.
Não é um fluxo simulado com delete e insert separados e não é um caminho genérico de compatibilidade Spark.
Exemplos
- YAML
- Python
mode: upsert
merge_strategy: delta
merge_keys: [order_id]
result = ingest(..., mode="upsert", merge_strategy="delta", merge_keys=["order_id"])
- YAML
- Python
mode: upsert
merge_strategy: delta_by_partition
merge_keys: [order_id]
merge_partition_column: order_date
result = ingest(
...,
mode="upsert",
merge_strategy="delta_by_partition",
merge_keys=["order_id"],
merge_partition_column="order_date",
)
- YAML
- Python
mode: upsert
merge_strategy: replace_partitions
merge_partition_column: order_date
replace_partitions_source_complete: true
result = ingest(
...,
mode="upsert",
merge_strategy="replace_partitions",
merge_partition_column="order_date",
replace_partitions_source_complete=True,
)
A substituição da partição requer evidências
Use replace_partitions somente quando a origem estiver completa para cada partição do lote. Se isso não puder ser comprovado, use uma estratégia de mesclagem.
ContractForge falha quando a lista de partições afetadas excede o limite configurado de predicado. Truncar essa lista tornaria uma substituição destrutiva ambígua.