EXPLAIN CREATE MATERIALIZED VIEW

Aplica-se a:assinalado sim Databricks SQL assinalado sim 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 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 secçã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 VIEW as consultas dos pipelines Lakeflow podem não funcionar sem EXPLAIN atualização. Por exemplo:

    • As expectativas (CONSTRAINT...EXPECT clá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.

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:

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 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.