Spark SQL-referens för materialiserade sjövyer

Denna artikel tillhandahåller Spark SQL-syntaxen för att skapa, lista, byta namn på och ta bort materialiserade sjövyer i Fabric.

Tips/Råd

Information om hur du skapar din första materialiserade sjövy finns i Kom igång med materialiserade sjövyer.

Skapa en materialiserad sjövy

Du kan definiera en materialiserad sjövy från valfri tabell eller från en annan materialiserad sjövy i ett sjöhus.

Syntax

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 

Anmärkning

  • Om namnet på arbetsytan innehåller blanksteg omger du det i backticks: `My Workspace`.lakehouse.schema.view_name
  • Materialiserade sjövynamn är skiftlägesokänsliga och konverteras till gemener (till exempel MyTestView blir mytestview).

Arguments

Parameter Beskrivning
OR REPLACE Skriver över alla befintliga materialiserade sjövyer med samma namn. Det går inte att kombinera med IF NOT EXISTS.
IF NOT EXISTS Skapar endast den materialiserade sjövyn om den inte redan finns. Uttalandet lyckas utan fel om vyn redan är definierad. Det går inte att kombinera med OR REPLACE.
MLV_Identifier Namnet på den materialiserade sjövyn. Kan vara fullständigt kvalificerad som workspace.lakehouse.schema.name.
CONSTRAINT ... CHECK Definierar en datakvalitetsregel. Satsen CHECK anger ett booleskt uttryck som varje rad måste uppfylla. Du kan definiera flera begränsningar.
ON MISMATCH Åtgärder att vidta när en rad bryter mot en begränsning. DROP tar tyst bort raden. FAIL stoppar uppdateringen med ett fel. Standard är FAIL.
PARTITIONED BY Kolumner att partitionera den materialiserade sjövyen med, vilket kan förbättra prestandan för frågor vid filtrerade läsningar.
COMMENT Beskrivning av fritext som lagras med definitionen för materialiserad sjövy.
TBLPROPERTIES Nyckel/värde-par som lagras som metadata i den materialiserade sjövyn.
AS select_statement Frågan SELECT som definierar data i den materialiserade sjövyn.

Examples

I följande exempel skapas en materialiserad sjövy med en datakvalitetsbegränsning, en kommentar och partitionering. OR REPLACE-klausal skriver över eventuell befintlig vy med samma namn.

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

I följande exempel skapas en enklare materialiserad sjövy. Satsen IF NOT EXISTS förhindrar ett fel om vyn redan finns, vilket gör den säker för distributionsskript.

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

Tips/Råd

Hantera materialiserad uppdatering av sjövy från ditt sjöhus

När du har skapat dina materialiserade sjövyer ska du inte orkestrera uppdateringen från en notebook-fil. Använd i stället de två inbyggda funktionerna på lakehouse:

  • Ursprung: Fabric härleder beroendeordningen mellan dina materialiserade sjövyer från deras definitioner. Om du vill öppna ursprungsvyn väljer du fliken Materialiserade sjövyer i menyfliksområdet och väljer sedan Hantera. Där kan du följa en pågående körning och granska uppströms- och nedströmsberoenden för varje vy.
  • Schemalagd uppdatering: Från samma hantera-vy skapar du ett eller flera scheman för att uppdatera alla materialiserade sjövyer eller en vald delmängd. Varje schema körs separat och uppdaterar vyer i beroendeordning, så underordnade vyer läser alltid nya data från sina överordnade vyer. Fabric försöker igen tillfälliga fel åt dig.

Använd notebook-filer för att skapa och iterera på dina materialiserade sjövydefinitioner. Låt ursprung och schemalagd uppdatering hantera beställning, körning och återförsök – för tillförlitliga, repeterbara data med mindre kod att underhålla.

Hämta en lista över materialiserade sjövyer

Om du vill hämta listan över alla materialiserade sjövyer i ett schema använder du följande syntax:

SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;

Om du till exempel vill visa en lista över alla materialiserade sjövyer i silver schemat:

SHOW MATERIALIZED LAKE VIEWS IN silver;

Hämta instruktionen som skapade en materialiserad sjövy

Använd följande syntax för att hämta instruktionen CREATE för en materialiserad sjövy:

SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;

Om du till exempel vill hämta definitionen av products_with_sales:

SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;

Uppdatera en materialiserad sjövy

Om du vill ändra definitionen av en materialiserad sjövy (till exempel SELECT frågan, begränsningar eller partitionering) använder du kommandot CREATE OR REPLACE . Du kan också ta bort den befintliga vyn och återskapa den.

Byt namn på en materialiserad sjövy

Om du vill byta namn på en befintlig materialiserad sjövy använder du ALTER MATERIALIZED LAKE VIEW kommandot . Syntaxen är:

ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;

Om du till exempel vill byta products_with_salesnamn på :

ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;

Anmärkning

Kommandot ALTER MATERIALIZED LAKE VIEW stöds endast för att byta namn. Information om hur du ändrar definitionen eller andra egenskaper (till exempel SELECT frågan, begränsningar eller partitionering) finns i Uppdatera en materialiserad sjövy.

Ta bort en materialiserad sjövy

Du kan ta bort en materialiserad sjövy med hjälp av alternativet Ta bort i lakehouse-objektutforskaren eller genom att köra ett DROP kommando. Syntaxen är:

DROP MATERIALIZED LAKE VIEW MLV_Identifier;

Om du till exempel vill ta bort products_with_sales:

DROP MATERIALIZED LAKE VIEW products_with_sales;

Anmärkning

Att ta bort eller byta namn på en materialiserad sjövyvy påverkar härkomstvyn och den schemalagda uppdateringen. Se till att uppdatera referensen i alla beroende materialiserade sjövyer.

Aktuella begränsningar

Följande begränsningar gäller för Spark SQL-uttrycken för materialiserade sjövyer:

  • Schemanamn – Schemanamn med versaler (till exempel MYSCHEMA) stöds inte. Använd blandat skiftläge eller gemener.
  • Inga instruktioner för datamanipuleringsspråk (DML) – Du kan inte köra INSERT, UPDATEeller DELETE -instruktioner mot en materialiserad sjövy. Data fylls endast i av SELECT frågan i definitionen.
  • Inga tidsresefrågor – Frågan SELECT i en materialiserad sjövydefinition kan inte använda Delta Lake-tidsresesyntax (till exempel VERSION AS OF eller TIMESTAMP AS OF).
  • Inga användardefinierade funktioner – Användardefinierade funktioner (UDF: er) stöds inte i frågan SELECT som definierar en materialiserad sjövy.
  • Inga tillfälliga vyer som källor – Frågan SELECT kan referera till tabeller och andra materialiserade sjövyer, men inte tillfälliga vyer.
  • Spark-egenskaper på sessionsnivå – Spark-konfigurationsegenskaper som anges på sessionsnivå (till exempel spark.conf.set(...)) tillämpas inte under en schemalagd uppdatering. Ange egenskaper på sjöhus- eller arbetsytenivå i stället.