Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
MyTestViewblirmytestview).
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,UPDATEellerDELETE-instruktioner mot en materialiserad sjövy. Data fylls endast i avSELECTfrågan i definitionen. -
Inga tidsresefrågor – Frågan
SELECTi en materialiserad sjövydefinition kan inte använda Delta Lake-tidsresesyntax (till exempelVERSION AS OFellerTIMESTAMP AS OF). -
Inga användardefinierade funktioner – Användardefinierade funktioner (UDF: er) stöds inte i frågan
SELECTsom definierar en materialiserad sjövy. -
Inga tillfälliga vyer som källor – Frågan
SELECTkan 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.