Partager via


Référence Spark SQL pour les vues de lac matérialisées

Dans cet article, vous allez découvrir la syntaxe Spark SQL pour les activités liées aux vues matérialisées du lac dans Microsoft Fabric.

Créer une vue matérialisée du lac

Vous pouvez définir une vue matérialisée de lac à partir de n’importe quelle table ou d’une autre vue matérialisée au sein d’un lakehouse. Le code suivant décrit la syntaxe permettant de déclarer une vue matérialisée de lac à l’aide de Spark SQL :

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 

Arguments

Paramètre Descriptif
MLV_Identifier Nom de la vue matérialisée du lac.
CONSTRAINT Mot clé pour définir une contrainte de qualité des données, suivie d’un nom défini par l’utilisateur. La contrainte s’applique au niveau de la vue matérialisée du lac.
CHECK Paramètre pour l’application d’une condition basée sur certaines valeurs de colonne. Obligatoire à utiliser lorsque vous définissez une contrainte.
ON MISMATCH Paramètre permettant de spécifier l’action à entreprendre si la contrainte est violée. Les actions possibles sont DROP et FAIL. Par défaut, sans cette clause, l’action est FAIL.
PARTITIONED BY Paramètre de création de partitions en fonction de la colonne spécifiée.
TBLPROPERTIES Liste des paires clé/valeur pour marquer la définition de la vue matérialisée du lac.
COMMENT Déclaration pour décrire la vue concrète du lac.
AS select_statement Utilisez une requête pour remplir les données dans la vue matérialisée du lac à l'aide d'une déclaration SELECT.

Examples

L’exemple suivant illustre la définition d’une vue matérialisée de lac à l’aide de la syntaxe de remplacement :

CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.customer_orders AS
SELECT 
    c.customerID,
    c.customerName,
    c.region,
    o.orderDate,
    o.orderAmount
FROM bronze.customers c INNER JOIN bronze.orders o
ON c.customerID = o.customerID

L’exemple suivant illustre la définition d’une vue matérialisée nommée customers_enriched en effectuant une jointure entre une table customers et une table orders.

CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched AS 
SELECT 
    c.customerID, 
    c.customerName, 
    c.contact, 
    CASE  
       WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE  
       ELSE FALSE  
       END AS has_orders 
FROM bronze.customers c LEFT JOIN bronze.orders o 
ON c.customerID = o.customerID; 

Remarque

  • Si le nom de votre espace de travail contient des espaces, placez-le entre des guillemets inversés : `My Workspace`.lakehouse.schema.view_name
  • Les noms de vues matérialisées du lac ne sont pas sensibles à la casse et sont convertis en minuscules (par exemple, MyTestView devient mytestview)

L’exemple suivant définit une vue matérialisée appelée customers_enriched, partitionnée par la colonne city :

CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched 
COMMENT "This is a sample materialized lake view" 
PARTITIONED BY (city)
AS SELECT 
     c.customerID, 
     c.customerName, 
     c.contact, 
     CASE  
        WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE  
        ELSE FALSE  
        END AS has_orders 
FROM bronze.customers c LEFT JOIN bronze.orders o 
ON c.customerID = o.customerID; 

Obtenir la liste des vues matérialisées du lac

Pour obtenir la liste de toutes les vues matérialisées d’un lac, utilisez la commande suivante :

SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;

Voici un exemple :

SHOW MATERIALIZED LAKE VIEWS IN silver;

Récupérer l’instruction qui a créé une vue matérialisée du lac

Pour obtenir l’instruction CREATE d’une vue matérialisée de lac, utilisez la commande suivante :

SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;

Voici un exemple :

SHOW CREATE MATERIALIZED LAKE VIEW customers_enriched;

Mettre à jour une vue matérialisée du lac

Pour mettre à jour la définition d'une vue de lac matérialisée, vous devez la supprimer et la recréer. L’instruction ALTER est prise en charge uniquement pour renommer une vue matérialisée de lac.

ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;

Voici un exemple :

ALTER MATERIALIZED LAKE VIEW customers_enriched RENAME TO customers_enriched_new;

Supprimer une vue matérialisée du lac

Vous pouvez supprimer une vue matérialisée du lac à l’aide de l’option Supprimer dans l’Explorateur d’objets lakehouse ou en exécutant la commande suivante dans le notebook :

DROP MATERIALIZED LAKE VIEW MLV_Identifier;

Voici un exemple :

DROP MATERIALIZED LAKE VIEW customers_enriched;

Remarque

La suppression ou le changement de nom d’une vue de lac matérialisée affecte la vue de traçabilité et l’actualisation planifiée. Veillez à mettre à jour la référence dans toutes les vues matérialisées dépendantes du lac.

Limitations actuelles

  • Les noms de schéma entièrement en majuscules ne sont pas pris en charge. Vous pouvez continuer à créer des vues matérialisées de lac sans utiliser toutes les lettres majuscules dans le nom du schéma.
  • Les propriétés Spark définies au niveau de la session ne sont pas appliquées lors d’une actualisation planifiée de lignage.
  • La création d’une vue matérialisée du lac avec un voyage temporel delta n’est pas prise en charge.
  • Les instructions DML (Data Manipulation Language) ne sont pas prises en charge avec les vues matérialisées du lac.
  • Les fonctions définies par l’utilisateur ne sont pas prises en charge dans les instructions CREATE TABLE AS SELECT CTAS.
  • Vous ne pouvez pas utiliser de vues temporaires pour définir des vues matérialisées de lac.