EXPLAIN CREATE MATERIALIZED VIEW

Se aplica a:con check marcado Databricks SQL con check marcado Databricks Runtime 17.3 y versiones posteriores

Informa si la consulta para una vista materializada puede actualizarse incrementalmente. Adelántate EXPLAIN a una CREATE MATERIALIZED VIEW declaración para comprobar la elegibilidad para incrementalización antes de crear la vista materializada o hacer una actualización costosa.

Para obtener información sobre la incrementalización de vistas materializadas, consulte Actualización incremental para vistas materializadas.

Qué EXPLAIN informes

EXPLAIN CREATE MATERIALIZED VIEW comprueba si la consulta es estructuralmente elegible para una actualización incremental. La Incremental Update Eligibility sección de la salida informa de uno de dos resultados:

  • The Materialized View can be incrementally refreshed: El patrón de consulta soporta actualización incremental.
  • The Materialized View cannot be incrementally refreshed: La consulta no es estructuralmente elegible para una actualización incremental. Bajo las AUTO políticas y FULL refresh, la vista materializada utiliza un recálculo completo. Bajo INCREMENTAL o INCREMENTAL STRICT, falla CREATE porque no es posible refrescar incrementalmente. La Detailed Incrementalization Info sección enumera qué impide la incrementalización.

La elegibilidad estructural no garantiza que se realice una actualización incremental. Bajo la política de actualización por defecto AUTO , el modelo de costes toma la decisión final en tiempo de ejecución y aún puede elegir un recálculo completo para una vista materializada elegible. Para más detalles, véase Elegibilidad y comportamiento en tiempo de ejecución.

Cuándo debe usarse EXPLAIN

Ejecuta EXPLAIN CREATE MATERIALIZED VIEW:

  • Antes de desplegar una nueva vista materializada, verifica que el patrón de consulta soporte refresco incremental.
  • Cuando depuras actualizaciones lentas para confirmar que la vista materializada es elegible. Si no lo es, reescribe la consulta.
  • Después de reescribir una consulta, para verificar que la nueva versión es elegible.
  • Cuando migras desde dbt u otra herramienta, para validar que las consultas transformadas se benefician de una actualización incremental.

Syntax

EXPLAIN [CREATE MATERIALIZED VIEW query]

Parámetros

  • consulta

    Una consulta SQL que crea una vista materializada. Antes EXPLAIN de la consulta.

    Nota:

    CREATE MATERIALIZED VIEW Es posible que las consultas de canalizaciones de Lakeflow no funcionen sin EXPLAIN actualizar. Por ejemplo:

    • Las expectativas (CONSTRAINT...EXPECT cláusulas) deben quitarse de la consulta.
    • Es posible que los conjuntos de datos de origen deba calificarse con un catálogo, un esquema u otra ruta de acceso que no sea necesaria cuando se ejecute en el contexto de una canalización.

Examples

Los siguientes ejemplos muestran la salida de una consulta elegible y de dos consultas que no pueden actualizarse incrementalmente.

Elegible para una renovación incremental

Una consulta que aplique un filtro, proyección y agregación a una tabla Delta Lake es elegible:

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.

No elegible: usos LIMIT

Una consulta que use LIMIT no es incremental, porque los operadores límite no pueden mantenerse 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.

No elegible: fuente no Delta Lake

Una consulta que lee desde una fuente no Delta Lake, como archivos CSV, no es 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.

Elegibilidad y comportamiento en tiempo de ejecución

EXPLAIN informa si la estructura de consulta soporta actualización incremental. No predice lo que hace el optimizador en tiempo de ejecución. Bajo el valor por defecto REFRESH POLICY AUTO, el modelo de costes toma la decisión final y puede elegir un recálculo completo incluso para una vista materializada elegible, por ejemplo cuando estima que el anidamiento de operadores o el volumen de datos actual hacen que un recálculo completo sea más eficiente. Para la lista completa de políticas de actualización, consulte Política de actualización.

Si una vista materializada elegible utiliza consistentemente el recálculo completo bajo AUTO, puedes:

Las razones comunes de rechazo del modelo de costes incluyen:

  • EXCESSIVE_OPERATOR_NESTING: La definición de la consulta es compleja y tiene muchos niveles de anidamiento de operadores, que el modelo de costes considera arriesgados para el procesamiento incremental.
  • CHANGESET_SIZE_THRESHOLD_EXCEEDED y TABLE_SIZE_THRESHOLD_EXCEEDED: El modelo de costes estima que un recálculo completo es más barato para el volumen de datos actual.

Un rechazo basado en el modelo de costes no significa que la visión materializada no pueda incrementalizarse. Significa que el optimizador decidió no hacerlo. El escenario REFRESH POLICY INCREMENTAL es una forma apoyada de anular esa elección.