Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Tanto os fluxos REPLACE WHERE como as vistas materializadas autónomas permitem manter tabelas derivadas que se mantêm atualizadas à medida que os dados de origem mudam, mas resolvem problemas diferentes. Para a maioria das cargas de trabalho batch extract, transform and load (ETL) que periodicamente sobrescrevem uma janela temporal ou uma partição, utiliza-se um fluxo REPLACE WHERE incremental. Utilize vistas materializadas para uma camada de aceleração de consultas que fornece resultados pré-computados a dashboards e relatórios.
Esta página abrange tabelas de streaming independentes e vistas materializadas. Para fluxos REPLACE WHERE num pipeline Lakeflow, veja processamento em lote com fluxos REPLACE WHERE.
Utilize REPLACE WHERE para sobrescrições em lote
Um fluxo REPLACE WHERErecalcula e sobrescreve apenas as linhas que correspondem a um predicado, como uma janela temporal ou uma partição. Todas as outras linhas permanecem intocadas. 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 da consulta que a define. O Azure Databricks atualiza uma vista materializada de forma incremental quando a consulta e os dados de origem a suportam, e de resto executa uma atualização completa. Se uma atualização é incremental depende da estrutura da consulta e das tabelas de origem, pelo que o custo de cada atualização é mais difícil de prever. Veja Como as visualizações materializadas autónomas são renovadas?.
Para um modelo de dados ETL em lote que muda em intervalos delimitados, um fluxo REPLACE WHERE permite-te controlar exatamente quais as linhas que cada refresh reescreve. Uma vista materializada é a melhor opção quando os leitores precisam de acesso rápido a um resultado pré-computado.
Constructos do mapa para camadas da arquitetura medallion
A tabela seguinte mapeia cada camada de uma arquitetura medallion para o construto que o Databricks recomenda:
| Camada | Construir | Porquê |
|---|---|---|
| Bronze (importação em bruto) | Ingestão com Lakeflow Connect ou Auto Loader | Regista registos brutos de forma incremental à medida que chegam, sem reprocessar o histórico. |
| Prata (factos) | Fluxo incremental REPLACE WHERE | Sobrescreve apenas as janelas temporais ou partições afetadas para atualizações de factos, dados que chegam tarde e correções. |
| Prata (dimensões) |
AUTO CDC Escoamento |
Aplica semânticas de inserção, atualização e eliminação automaticamente e preserva o histórico com dimensão de evolução lenta (SCD) Tipo 1 ou Tipo 2. |
| Ouro (agregações e modelos de dados) | Fluxo REPLACE WHERE incremental | Recalcula apenas o intervalo de predicados para agregados e modelos, evitando recálculos de tabela completa. |
| Aceleração de consultas e fornecimento | visão materializada | Serve os resultados pré-computados para painéis e relatórios e mantém os resultados das consultas atualizados. |
Guia de decisão
Utilize o guia seguinte para escolher entre os dois construtos.
Utilize um fluxo SUBSTITUIR WHERE quando:
- Execute sobrescrições periódicas em lote de uma janela temporal ou partição.
- Corrija os dados recebidos com atraso.
- Aplicar eliminações de conformidade a um intervalo delimitado.
- Atualize os dados ao nível da partição.
Utilize uma vista materializada quando:
- Acelere as consultas no dashboard.
- Servir agregações pré-computadas aos leitores.
- Mantenha os resultados das consultas atualizados para uma camada de disponibilização.
Exemplo: sobrescrição incremental com REPLACE WHERE
O exemplo seguinte define uma tabela alvo que sobrescrive apenas os últimos 7 dias de dados em cada atualização. Durante a atualização, o fluxo elimina as linhas correspondentes ao predicado, recalcula a consulta de origem para esse mesmo intervalo e insere os resultados. As linhas fora da janela ficam 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 de atualização incremental, veja fluxos REPLACE WHERE para tabelas de streaming autónomas.