Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Tanto os fluxos REPLACE WHERE quanto as visualizações materializadas independentes permitem manter tabelas derivadas que permanecem atualizadas conforme os dados de origem mudam, mas resolvem problemas diferentes. Para a maioria das cargas de trabalho de extração, transformação e carregamento (ETL) em lote que periodicamente sobrescrevem uma janela de tempo ou uma partição, use um fluxo REPLACE WHERE incremental. Use visualizações materializadas para uma camada de aceleração de consultas que fornece resultados pré-computados para dashboards e relatórios.
Esta página abrange tabelas de streaming independentes e visualizações materializadas. Para fluxos REPLACE WHERE em um pipeline Lakeflow, veja processamento em lote com fluxos REPLACE WHERE.
Use REPLACE WHERE para sobrescrevimentos em lote
Um fluxo REPLACE WHERE recalcula e sobrescreve apenas as linhas que correspondem a um predicado, como uma janela de tempo ou uma partição. Todas as outras linhas permanecem inalteradas. Como o fluxo reavalia a consulta de origem apenas para esse intervalo de predicados, o custo de cada atualização depende do tamanho do intervalo, não do tamanho da tabela.
Uma visão materializada mantém o resultado completo de sua consulta de definição. O Azure Databricks atualiza uma exibição materializada de forma incremental quando a consulta e os dados de origem a suportam, e caso contrário executa uma atualização completa. Se uma atualização é incremental depende da estrutura da consulta e das tabelas de origem, então o custo de cada atualização é mais difícil de prever. Veja Como as visualizações materializadas independentes são atualizadas?.
Para um modelo de dados ETL em lote que muda em intervalos limitados, um fluxo REPLACE WHERE permite controlar exatamente quais linhas cada refresh reescreve. Uma visualização materializada é a melhor opção quando os leitores precisam de acesso rápido a um resultado pré-computado.
Mapear constructos para camadas Medallion
A tabela a seguir mapeia cada camada de uma arquitetura medallion para o construto que o Databricks recomenda:
| Camada | Constructo | Por que |
|---|---|---|
| Bronze (ingestão bruta de dados) | Ingestão com Lakeflow Connect ou Auto Loader | Os registros brutos são gravados aos poucos à medida que chegam, sem reprocessar o histórico. |
| Prata (dados) | Fluxo REPLACE incremental WHERE | Sobrescreve apenas as janelas de tempo ou partições afetadas para atualizações na tabela de fatos, dados que chegam tarde e correções. |
| Prata (dimensões) |
AUTO CDC Fluxo |
Aplica semântica de inserir, atualizar e excluir automaticamente e preserva o histórico com dimensão que muda lentamente (SCD) Tipo 1 ou Tipo 2. |
| Ouro (agregações e modelos de dados) | Fluxo incremental REPLACE WHERE | Recalcula apenas a faixa de predicados para agregados e modelos, evitando recálculos de tabela completa. |
| Aceleração e disponibilização de consultas | visão materializada | Fornece resultados pré-computados para painéis e relatórios e mantém os resultados das consultas atualizados. |
Guia de decisão
Use o guia a seguir para escolher entre as duas estruturas.
Use um fluxo SUBSTITUIR WHERE quando você:
- Execute sobrescritas periódicas em lote de uma janela de tempo ou partição.
- Corrija os dados que chegaram atrasados.
- Aplique exclusões de conformidade a um intervalo limitado.
- Atualize os dados no nível da partição.
Use uma visualização materializada quando você:
- Acelere as consultas do dashboard.
- Disponibilize agregações pré-computadas para os leitores.
- Mantenha os resultados das consultas atualizados para uma camada de disponibilização.
Exemplo: sobrescrevimento incremental com REPLACE WHERE
O exemplo a seguir define uma tabela alvo que sobrescreve apenas os últimos 7 dias de dados em cada atualização. Durante a atualização, o fluxo exclui as linhas correspondentes ao predicado, recalcula a consulta de origem para o mesmo intervalo e insere os resultados. Linhas fora da janela permanecem intocadas:
CREATE OR REFRESH STREAMING TABLE payments_latest
FLOW REPLACE WHERE payment_date >= date_add(current_date(), -7) BY NAME
SELECT payment_id, booking_id, status, payment_date
FROM samples.wanderbricks.payments;
BY NAME é necessário para que as colunas coincidam pelo nome e não pela posição. Para a sintaxe completa, sobreposições de predicados, backfills e comportamento da atualização incremental, veja REPLACE WHERE flows para tabelas de streaming independentes.