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.
Aplica-se a:
Databricks SQL
Databricks Runtime 17.3 e superiores
Indica se a consulta para uma vista materializada pode ser atualizada incrementalmente. Anteceda EXPLAIN a uma CREATE MATERIALIZED VIEW declaração para verificar a elegibilidade da incrementalização antes de criar a visualização materializada ou fazer uma atualização cara.
Para saber mais sobre a incrementalização de visualizações materializadas, consulte Atualização incremental para visualizações materializadas.
Que EXPLAIN relatórios
EXPLAIN CREATE MATERIALIZED VIEW verifica se a consulta é estruturalmente elegível para atualização incremental. A Incremental Update Eligibility secção do resultado apresenta um de dois resultados:
-
The Materialized View can be incrementally refreshed: O padrão de consulta suporta atualização incremental. -
The Materialized View cannot be incrementally refreshed: A consulta não é estruturalmente elegível para atualização incremental. Sob asAUTOpolíticas eFULLatualizar, a visualização materializada utiliza um recálculo completo. SobINCREMENTALouINCREMENTAL STRICT, falhaCREATEporque a atualização incremental não é possível. ADetailed Incrementalization Infosecção lista o que impede a incrementalização.
A elegibilidade estrutural não garante que uma atualização incremental seja executada. Segundo a política de atualização padrão AUTO , o modelo de custo toma a decisão final em tempo de execução e ainda pode escolher um recálculo completo para uma visualização materializada elegível. Para mais detalhes, consulte Elegibilidade e comportamento em tempo de execução.
Quando usar EXPLAIN
Executar EXPLAIN CREATE MATERIALIZED VIEW:
- Antes de implementar uma nova vista materializada, para verificar se o padrão de consulta suporta atualização incremental.
- Quando depurares atualizações lentas, para confirmar que a visualização materializada é elegível. Se não estiver, reescreva a consulta.
- Depois de reescrever uma consulta, para verificar se a nova versão é elegível.
- Quando migra de dbt ou outra ferramenta, para validar que as consultas transformadas beneficiam de uma atualização incremental.
Sintaxe
EXPLAIN [CREATE MATERIALIZED VIEW query]
Parâmetros
query
Uma consulta SQL que cria uma vista materializada. Anteceda
EXPLAINà pergunta.Observação
CREATE MATERIALIZED VIEWas consultas dos pipelines Lakeflow podem não funcionar semEXPLAINatualização. Por exemplo:- As expectativas (
CONSTRAINT...EXPECTcláusulas) devem ser removidas da consulta. - Os conjuntos de dados de origem podem precisar de ser qualificados com um catálogo, esquema ou outro caminho que não é necessário quando executado no contexto de um pipeline.
- As expectativas (
Examples
Os exemplos seguintes mostram a saída de uma consulta elegível e de duas consultas que não podem ser atualizadas incrementalmente.
Elegível para renovação incremental
Uma consulta que aplique um filtro, projeção e agregação a uma tabela Delta Lake é elegível:
EXPLAIN CREATE MATERIALIZED VIEW sales_summary AS
SELECT region, SUM(revenue) AS total_revenue, COUNT(*) AS order_count
FROM catalog.schema.orders
WHERE order_date >= '2024-01-01'
GROUP BY region;
== Incremental Update Eligibility ==
The Materialized View can be incrementally refreshed.
== Detailed Incrementalization Info ==
No issues detected.
Não elegível: utilizações LIMIT
Uma consulta que utiliza LIMIT não é incremental, porque os operadores de limite não podem ser mantidos de forma incremental:
EXPLAIN CREATE MATERIALIZED VIEW top_customers AS
SELECT customer_id, total_spend
FROM catalog.schema.customer_summary
ORDER BY total_spend DESC
LIMIT 100;
== Incremental Update Eligibility ==
The Materialized View cannot be incrementally refreshed.
== Detailed Incrementalization Info ==
- OPERATOR_NOT_INCREMENTALIZABLE: Operators GlobalLimit, LocalLimit are not incrementalizable. Consider rewriting the query to avoid using them.
Não elegível: fonte não pertencente a Delta Lake
Uma consulta que lê de uma fonte não Delta Lake, como ficheiros CSV, não é incremental:
EXPLAIN CREATE MATERIALIZED VIEW external_data AS
SELECT * FROM csv.`/path/to/files/`;
== Incremental Update Eligibility ==
The Materialized View cannot be incrementally refreshed.
== Detailed Incrementalization Info ==
- INPUT_NOT_IN_DELTA: Tables are not in Delta format. Consider converting them to Delta tables.
Elegibilidade e comportamento em tempo de execução
EXPLAIN Indica se a estrutura da consulta suporta atualização incremental. Não prevê o que o otimizador faz em tempo de execução. Sob o padrão REFRESH POLICY AUTO, o modelo de custo toma a decisão final e pode escolher um recálculo completo mesmo para uma vista materializada elegível, por exemplo, quando estima que o aninhamento do operador ou o volume atual de dados tornam um recálculo completo mais eficiente. Para a lista completa de políticas de atualização, consulte Política de atualização.
Se uma visualização materializada elegível usar consistentemente o recomputo completo em AUTO, pode:
- Definir
REFRESH POLICY INCREMENTALpara preferir renovação incremental em vez da escolha baseada no custo. Para a sintaxe, vejaREFRESH cláusula POLICY. - Consulte o registo de eventos do pipeline para
INCREMENTAL_PLAN_REJECTED_BY_COST_MODELeventos e perceba porque é que o modelo de custos rejeitou o plano incremental. Para detalhes, consulte o registo de eventos do pipeline e osCostModelRejectionSubTypevalores no esquema do registo de eventos do pipeline.
Razões comuns de rejeição do modelo de custo incluem:
-
EXCESSIVE_OPERATOR_NESTING: A definição da consulta é complexa e possui muitos níveis de aninhamento de operadores, que o modelo de custo considera arriscados para processamento incremental. -
CHANGESET_SIZE_THRESHOLD_EXCEEDEDeTABLE_SIZE_THRESHOLD_EXCEEDED: O modelo de custos estima que uma recomputação completa é mais barata para o volume atual de dados.
Uma rejeição baseada no modelo de custos não significa que a visão materializada não possa incrementalizar-se. Significa que o otimizador optou por não o fazer. O cenário REFRESH POLICY INCREMENTAL é uma forma suportada de ultrapassar essa escolha.