EXPLAIN CREATE MATERIALIZED VIEW

Aplica-se a:marcado como sim Databricks SQL marcado como sim Databricks Runtime 17.3 e acima

Relata se a consulta para uma visualização materializada pode ser atualizada incrementalmente. Anteceda EXPLAIN uma CREATE MATERIALIZED VIEW declaração para verificar a elegibilidade da incrementalização antes de criar a visualização materializada ou executar uma atualização cara.

Para saber mais sobre a incrementalização de exibição materializada, consulte Atualização incremental para exibições materializadas.

Quais EXPLAIN relatos

EXPLAIN CREATE MATERIALIZED VIEW verifica se a consulta é estruturalmente elegível para atualização incremental. A Incremental Update Eligibility seção da saída 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 as AUTO políticas e FULL atualizar, a visualização materializada utiliza um recálculo completo. Sob INCREMENTAL ou INCREMENTAL STRICT, falha CREATE porque a atualização incremental não é possível. A Detailed Incrementalization Info seção lista o que impede a incrementalização.

A elegibilidade estrutural não garante que uma atualização incremental ocorra. Sob a política padrão AUTO de atualização, 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 detalhes, veja Elegibilidade e comportamento em tempo de execução.

Quando usar EXPLAIN

Executar EXPLAIN CREATE MATERIALIZED VIEW:

  • Antes de implantar uma nova visualização materializada, verifique se o padrão de consulta suporta atualização incremental.
  • Quando você depura atualizações lentas, para confirmar que a visualização materializada é elegível. Se não for, reescreva a consulta.
  • Depois de reescrever uma consulta, para verificar se a nova versão é elegível.
  • Quando você migra de dbt ou outra ferramenta, para validar que as consultas transformadas se beneficiam de uma atualização incremental.

Sintaxe

EXPLAIN [CREATE MATERIALIZED VIEW query]

Parâmetros

  • query

    Uma consulta SQL que cria uma exibição materializada. Introduza EXPLAIN a consulta.

    Observação

    CREATE MATERIALIZED VIEW as consultas dos pipelines do Lakeflow podem não funcionar EXPLAIN sem atualização. Por exemplo:

    • As expectativas (CONSTRAINT...EXPECT cláusulas) devem ser removidas da consulta.
    • Os conjuntos de dados de origem podem precisar ser qualificados com um catálogo, esquema ou outro caminho que não seja necessário quando executado no contexto de um pipeline.

Exemplos

Os exemplos a seguir mostram a saída de uma consulta elegível e de duas consultas que não podem ser atualizadas incrementalmente.

Elegível para atualização incremental

Uma consulta que aplica 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: usos LIMIT

Uma consulta que usa LIMIT não é incrementalizável, porque 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 ao Delta Lake

Uma consulta que lê de uma fonte não Delta Lake, como arquivos 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 durante a execução

EXPLAIN Informa se a estrutura da consulta suporta atualização incremental. Ele 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 visualização 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, veja Política de atualização.

Se uma visualização materializada elegível usa consistentemente o recálculo completo em AUTO, você pode:

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_EXCEEDED e TABLE_SIZE_THRESHOLD_EXCEEDED: O modelo de custo estima que um recálculo completo é mais barato para o volume atual de dados.

Uma rejeição no modelo de custo não significa que a visão materializada não possa incrementalizar. Significa que o otimizador escolheu não fazer isso. O cenário REFRESH POLICY INCREMENTAL é uma forma suportada de superar essa escolha.