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.
Cada vez que uma atualização agendada é executada para as suas vistas materializadas do lago, o Fabric determina a melhor estratégia a usar — sem atualização, incremental ou completa — com base no que mudou nos dados de origem. Este comportamento chama-se atualização ótima e ajuda-o a manter as suas vistas de lago materializadas atualizadas, minimizando os custos de cálculo e o tempo de atualização.
Este artigo explica como funciona a atualização ótima, o que cada estratégia faz e como mudar para o modo de atualização total quando necessário.
Observação
A atualização ótima não é suportada nos seguintes cenários:
- Definições do PySpark: A atualização ideal aplica-se apenas a MLVs definidos com Spark SQL. MLVs definidos pelo PySpark usam sempre uma atualização completa.
- Tabelas de origem não-Delta: Vistas de lago materializadas que usam tabelas não-Delta como fonte realizam sempre uma atualização completa. Estratégias incrementais e sem atualização requerem fontes de tabelas Delta.
Benefícios da atualização ideal
Ao analisar os commits delta em tabelas de origem, a atualização ideal pode tomar decisões inteligentes sobre como processar os seus dados. Sempre que possível, isto pode resultar em:
- Custo mais baixo: Menos computação e armazenamento são usados quando o Fabric deteta que os dados de origem não mudaram e ignora completamente a atualização. Não são aplicadas taxas adicionais para uma atualização ótima — é cobrado com base no uso de computação durante as operações de atualização.
- Eficiência melhorada: Ciclos de atualização mais rápidos quando apenas os dados alterados precisam de ser processados, ajudando-o a fornecer insights mais frescos.
- Poupança de tempo: Redução da duração da atualização quando é aplicado processamento incremental em vez de recalcular o conjunto de dados completo.
Estratégias ótimas de atualização
A tabela seguinte descreve as estratégias de atualização que a renovação ótima pode selecionar:
| Política de atualização | Description |
|---|---|
| Sem atualização | Se não forem detetados novos commits delta nas tabelas de origem, o Fabric ignora completamente a atualização, evitando cálculos desnecessários. |
| Atualização incremental | Processa apenas os dados alterados quando novos commits delta são detetados nas tabelas de origem. |
| Atualização completa | Recalcula toda a vista materializada do lago a partir do conjunto de dados de origem completo. Esta estratégia é utilizada quando são detetadas expressões não suportadas, quando as alterações não podem ser processadas de forma incremental, ou quando o conjunto de dados de origem é suficientemente pequeno para que uma recomputação completa seja mais rápida do que o processamento incremental. |
Importante
A atualização incremental é aplicada com base nos seguintes fatores:
- Padrão de dados de origem. Os dados apenas de anexação suportam processamento incremental para inserções. Para dados não anexados, como eliminações ou atualizações, a atualização incremental é suportada apenas quando a visualização do lago materializada usa uma dica de atualização que identifica a identidade da linha. Caso contrário, o motor volta ao modo de atualização total. Para mais detalhes, veja Padrões de atualização incremental e alteração de dados.
- Fluxo de dados de alterações do Delta (CDF). O CDF deve estar ativado (
delta.enableChangeDataFeed=true) em todas as tabelas de origem referenciadas na definição materializada da vista do lago. Sem CDF, a atualização ótima só pode escolher entre não renovar e renovar completamente. Para mais informações, veja Ativar atualização incremental.
Configurar a ótima atualização
O interruptor ótimo de atualização dá-te estratégias de não-atualização e renovação completa sem qualquer configuração extra. Para desbloquear a estratégia de atualização incremental, também precisa de ativar o feed de dados de alterações nas suas tabelas de origem.
Ativar o modo de atualização ideal
Por padrão, o modo de atualização ótimo está ativado para uma linhagem de vista materializada em lake. Se não estiver ativado, siga estes passos para o ativar:
Vá à sua casa do lago e selecione Vistas Materializadas para o lago.
Seleciona Gerir e depois seleciona a opção de atualização Ótima para o ativar.
Padrões incrementais de atualização e alteração de dados
A atualização incremental suporta tanto padrões de dados apenas anexados como não anexados quando a consulta e os dados funcionam com a estratégia de atualização.
Observação
Quando a atualização incremental não é a opção mais eficiente, o motor pode recorrer a uma atualização completa com base no tamanho e custo das alterações. Esta alternativa ajuda a manter atualizações eficientes, mantendo a correção.
Para atualizações só de acréscimo, o Fabric processa apenas as novas linhas que foram adicionadas desde a atualização anterior. Para dados que não são adicionais, como eliminações ou atualizações, o motor precisa de uma forma fiável de identificar linhas. Se a visualização do lago materializado definir uma dica de atualização que declara uma chave única, o Fabric pode aplicar os deltas de forma incremental. Se não houver uma chave compatível disponível, o motor volta à atualização total – mesmo quando o CDF está ativado e a consulta utiliza apenas construções SQL suportadas.
Para mais informações sobre o tratamento de eliminações e atualizações, consulte Eliminações e atualizações de controlo em visualizações materializadas do lago com dicas de atualização.
Ativar a atualização incremental
Para usar a atualização incremental, é necessário ativar a propriedade de fluxo de dados de mudança de delta (CDF) em todas as tabelas de origem ou visualizações de lago materializadas referenciadas na definição da vista de lago materializada. O CDF permite que o Fabric leia apenas as linhas que mudaram desde a última atualização, em vez de reprocessar o conjunto de dados completo.
Sem o CDF ativado, a atualização ideal só pode escolher entre sem atualização e atualização completa.
Sugestão
Para ajudar a identificar oportunidades de otimização de atualizações, o Fabric apresenta um banner que lista vistas de lago materializadas elegíveis para atualização incremental, mas bloqueadas porque o CDF não está ativado numa ou mais tabelas de origem. O banner aparece na vista de linhagem, nos detalhes das corridas recentes e ao nível do nó individual , para que possas identificar a lacuna a partir do ponto de entrada que usares.
Para ativar o CDF diretamente a partir do banner:
No banner, selecione Ativar CDF.
No diálogo Ativar o Feed de Dados de Alterações, reveja a lista de vistas materializadas do lake e das tabelas de origem onde o CDF será ativado.
Selecione Ativar. A próxima atualização reflete o estado atualizado do CDF.
Observação
Ativar o CDF nas suas tabelas de origem não tem impacto mensurável no armazenamento ou desempenho nas tabelas de origem usadas pelas visualizações de lago materializadas. O CDF é uma propriedade padrão de tabela Delta Lake da qual outras funcionalidades do Fabric também podem beneficiar. Para mais informações sobre como funciona o CDF, consulte o feed de dados de alterações do Lago Delta.
Pode ativar o CDF no momento da criação, incluindo TBLPROPERTIES na instrução CREATE.
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
Para tabelas de origem existentes, use ALTER TABLE para ativar o CDF:
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Por exemplo, para ativar o CDF em ambas as tabelas de origem do guia de iniciação:
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Construções SQL suportadas por atualização incremental
A atualização incremental funciona quando a definição materializada da vista do lago usa apenas os construtos SQL descritos aqui. Se a sua consulta incluir elementos não suportados — como funções de janela ou funções não determinísticas — o Fabric ainda atualiza os seus dados, mas recorre a uma atualização completa.
| Construção SQL | Observação |
|---|---|
| Expressão SELECT | São suportadas funções e expressões incorporadas determinísticas. Funções não determinísticas como rand(), uuid(), e current_timestamp() não são suportadas.
DISTINCT E as funções de janela não são suportadas. |
| FROM | Suporta tabelas Delta e vistas materializadas de lago. Subconsultas e CTEs funcionam se usarem apenas as cláusulas suportadas. |
| WHERE | Apenas funções incorporadas determinísticas são suportadas. |
| JUNÇÃO INTERNA | Supported. |
| JUNÇÃO EXTERIOR ESQUERDA / SEMI-JUNÇÃO ESQUERDA | Supported. A atualização incremental só funciona se a tabela do lado direito permanecer inalterada durante o ciclo de atualização. Qualquer alteração na tabela do lado direito desencadeia uma atualização completa. |
| GROUP BY / agregações | Supported. A utilização de Agregados (AVG(), STDDEV(), e outros) exige que todas as tabelas fonte sejam particionadas e que essa coluna de partição seja incluída na GROUP BY cláusula da consulta MLV – este requisito permite ao Fabric recalcular incrementalmente apenas as partições afetadas. SUM(), MIN(), MAX(), e COUNT() (sem DISTINCT) são um caso especial: suportam atualização incremental sem o requisito de particionamento. Misturar outras funções agregadas com SUM(), COUNT(), MIN(), e MAX() na mesma consulta (por exemplo, SELECT SUM(amount), AVG(price) ...) requer a condição de particionamento para toda a consulta; caso contrário, o Fabric volta à atualização completa.
GROUP BY as colunas devem aparecer na SELECT lista. |
| UNION ALL | Supported. |
| WITH | Expressões de tabelas comuns (CTEs) se usarem apenas cláusulas suportadas. |
| Subconsultas em expressões | Subconsultas dentro de expressões SELECT ou WHERE (como subconsultas escalares ou EXISTS) desencadeiam uma atualização completa se alguma tabela referenciada tiver alterações. |
| Restrições de qualidade de dados | Apenas funções incorporadas determinísticas são suportadas em restrições. |
Observação
Usar construções sem suporte não impede que crie uma vista materializada para o lago. Significa apenas que o Fabric usa uma atualização completa em vez de uma atualização incremental.
Atualização completa
A atualização ótima volta automaticamente à atualização completa quando necessário, por isso normalmente não é necessário forçar. No entanto, há casos em que pode querer acionar uma atualização completa manualmente — por exemplo, para diagnosticar resultados inesperados ou para reprocessar dados após uma correção.
Execute uma atualização completa única com SQL
Para forçar uma renovação completa de uma vista concreta materializada para o lago, execute o seguinte comando:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
Observação
Se o nome do seu espaço de trabalho contém espaços, inclua-o em backticks: `My Workspace`.lakehouse.schema.view_name
Desligue a taxa de atualização ótima
Se quiseres que todas as execuções agendadas façam uma atualização completa, podes desligar a opção de atualização ótima. Isto desativa tanto as estratégias de no-refresh como as incrementais — cada execução recalcula o conjunto de dados completo, mesmo que nenhum dado de origem tenha sido alterado.
Vá à sua casa do lago e selecione Vistas Materializadas para o lago.
Selecione Gerir e desative a opção de atualização Ótima.