Referencia de Spark SQL para vistas de lago materializadas

Este artículo proporciona la sintaxis SQL de Spark para crear, listar, renombrar y eliminar vistas materializadas de lagos en Fabric.

Sugerencia

Para crear la primera vista materializada del lago, consulte Introducción a las vistas materializadas del lago.

Creación de una vista de lago materializada

Puede definir una vista materializada del lago desde cualquier tabla o desde otra vista materializada del lago dentro de una casa de lago.

Sintaxis

CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS] [workspace.lakehouse.schema].MLV_Identifier 
[( 
    CONSTRAINT constraint_name1 CHECK (condition expression1) [ON MISMATCH DROP | FAIL],  
    CONSTRAINT constraint_name2 CHECK (condition expression2) [ON MISMATCH DROP | FAIL] 
)] 
[PARTITIONED BY (col1, col2, ... )] 
[COMMENT "description or comment"] 
[TBLPROPERTIES ("key1"="val1", "key2"="val2", ... )] 
AS select_statement 

Nota:

  • Si el nombre del área de trabajo contiene espacios, escríbalo entre comillas invertidas: `My Workspace`.lakehouse.schema.view_name
  • Los nombres de las vistas materializadas del lago no distinguen mayúsculas de minúsculas y se convierten en minúsculas (por ejemplo, MyTestView se convierte en mytestview).

Arguments

Parámetro Descripción
OR REPLACE Sobrescribe cualquier vista de lago materializada existente con el mismo nombre. No se puede combinar con IF NOT EXISTS.
IF NOT EXISTS Crea la vista de lago materializada solo si aún no existe. La declaración se ejecuta correctamente si la vista ya se encuentra definida. No se puede combinar con OR REPLACE.
MLV_Identifier Nombre de la vista materializada del lago. Puede ser completamente calificado como workspace.lakehouse.schema.name.
CONSTRAINT ... CHECK Define una regla de calidad de datos. La CHECK cláusula especifica una expresión booleana que cada fila debe satisfacer. Puede definir varias restricciones.
ON MISMATCH Acción que se debe realizar cuando una fila infringe una restricción. DROP quita silenciosamente la fila; FAIL detiene la actualización con un error. El valor predeterminado es FAIL.
PARTITIONED BY Columnas para particionar la vista materializada del lago según criterios, lo que puede mejorar el rendimiento de las consultas en las lecturas filtradas.
COMMENT Descripción de texto libre almacenada con la definición de vista de lago materializada.
TBLPROPERTIES Pares clave-valor almacenados como metadatos en la vista materializada del lago.
AS select_statement La consulta SELECT que define los datos en la vista materializada del lago.

Examples

En el ejemplo siguiente se crea una vista de lago materializada con una restricción de calidad de datos, un comentario y una creación de particiones. La OR REPLACE cláusula sobrescribe cualquier vista existente con el mismo nombre.

CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
(
    CONSTRAINT valid_quantity CHECK (quantity > 0) ON MISMATCH DROP
)
PARTITIONED BY (category)
COMMENT "Cleaned order data joined from products and orders"
AS SELECT 
    p.productID,
    p.productName,
    p.category,
    o.orderDate,
    o.quantity,
    o.totalAmount
FROM bronze.products p INNER JOIN bronze.orders o
ON p.productID = o.productID

En el ejemplo siguiente se crea una vista de lago materializada más sencilla. La IF NOT EXISTS cláusula impide un error si la vista ya existe, lo que hace que sea seguro para los scripts de implementación.

CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.products_with_sales AS
SELECT 
    p.productID,
    p.productName,
    p.category,
    CASE  
        WHEN COUNT(o.orderID) OVER (PARTITION BY p.productID) > 0 THEN TRUE  
        ELSE FALSE  
        END AS has_sales 
FROM bronze.products p LEFT JOIN bronze.orders o 
ON p.productID = o.productID

Sugerencia

Administra la actualización de la vista materializada de lago desde tu lakehouse

Después de crear las vistas de lago materializadas, no organice su actualización desde un cuaderno. En su lugar, use las dos funcionalidades integradas en lakehouse:

  • Linaje: Fabric deduce el orden de dependencia entre las vistas materializadas del lago a partir de sus definiciones. Para abrir la vista de linaje, seleccione la pestaña Vistas de lago materializadas de la cinta de opciones y, a continuación, seleccione Administrar. Desde allí, puede seguir una ejecución en curso e inspeccionar las dependencias anteriores y posteriores de cada vista.
  • Actualización programada: en la misma vista Administrar , cree una o varias programaciones para actualizar todas las vistas de lago materializadas o un subconjunto seleccionado. Cada programación se ejecuta independientemente y actualiza las vistas según el orden de dependencias, por lo que las vistas dependientes siempre leen datos actualizados de las vistas de las que dependen. Fabric vuelve a intentar automáticamente las operaciones que fallan de forma transitoria.

Utilice cuadernos de notas para crear e iterar sobre las definiciones de sus vistas materializadas de lago. Deje que el linaje y la actualización programada controlen el orden, la ejecución y los reintentos, para datos confiables y repetibles con menos código que mantener.

Obtener una lista de vistas materializadas del lago

Para obtener la lista de todas las vistas de lago materializadas en un esquema, use la sintaxis siguiente:

SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;

Por ejemplo, para enumerar todas las vistas materializadas del lago en el silver esquema:

SHOW MATERIALIZED LAKE VIEWS IN silver;

Recuperar la instrucción que creó una vista de lago materializada

Para obtener la CREATE instrucción de una vista de lago materializada, use la siguiente sintaxis:

SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;

Por ejemplo, para recuperar la definición de products_with_sales:

SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;

Actualizar una vista materializada de lago

Para modificar la definición de una vista de lago materializada (como la SELECT consulta, las restricciones o la creación de particiones), use el comando CREATE OR REPLACE . Como alternativa, puede eliminar la vista existente y volver a crearla.

Cambiar el nombre de una vista materializada de lago

Para cambiar el nombre de una vista de lago materializada existente, use el ALTER MATERIALIZED LAKE VIEW comando . La sintaxis es:

ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;

Por ejemplo, para renombrar products_with_sales:

ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;

Nota:

El ALTER MATERIALIZED LAKE VIEW comando solo se admite para cambiar el nombre. Para modificar la definición u otras propiedades (como la consulta SELECT, las restricciones o la partición), consulte Actualizar una vista de lago materializada.

Eliminar una vista materializada de un lago

Puede eliminar una vista de lago materializada mediante la opción Eliminar en el explorador de objetos lakehouse o ejecutando un DROP comando . La sintaxis es:

DROP MATERIALIZED LAKE VIEW MLV_Identifier;

Por ejemplo, para eliminar products_with_sales:

DROP MATERIALIZED LAKE VIEW products_with_sales;

Nota:

Quitar o cambiar el nombre de una vista de lago materializada afecta a la vista de linaje y la actualización programada. Asegúrese de actualizar la referencia en todas las vistas de lago materializadas dependientes.

Limitaciones actuales

Las siguientes limitaciones se aplican a las instrucciones de Spark SQL para vistas materializadas del lago:

  • Nombres de esquema : no se admiten nombres de esquema en mayúsculas (por ejemplo, MYSCHEMA). Utiliza mayúsculas y minúsculas combinadas.
  • No hay instrucciones de lenguaje de manipulación de datos (DML): no se pueden ejecutar INSERT, UPDATE o DELETE en una vista materializada en un lago de datos. Solo los datos se rellenan por la consulta SELECT en la definición.
  • Sin consultas de viaje de tiempo: la SELECT consulta en una definición de vista de lago materializada no puede usar la sintaxis de viaje en tiempo de Delta Lake (por ejemplo, VERSION AS OF o ).TIMESTAMP AS OF
  • Ninguna función definida por el usuario : las funciones definidas por el usuario (UDF) no se admiten en la SELECT consulta que define una vista de lago materializada.
  • No hay vistas temporales como fuentes — la SELECT consulta puede hacer referencia a tablas y otras vistas de lago materializadas, pero no vistas temporales.
  • Propiedades de Spark de nivel de sesión: las propiedades de configuración de Spark establecidas en el nivel de sesión (por ejemplo, spark.conf.set(...)) no se aplican durante una actualización programada. Establezca las propiedades en el nivel de lago o área de trabajo en su lugar.