Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen gir Spark SQL-syntaksen for å lage, liste, omdøpe og slette materialiserte lake-visninger i Fabric.
Tips
For å lage din første materialiserte innsjøutsikt, se Kom i gang med materialiserte innsjøutsikter.
Opprette en materialisert innsjøvisning
Du kan definere en materialisert innsjøvisning fra en hvilken som helst tabell eller fra en annen materialisert innsjøvisning i et innsjøhus.
Syntaks
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
Merk deg
- Hvis navnet på arbeidsområdet ditt inneholder mellomrom, innkapsl det i backticks:
`My Workspace`.lakehouse.schema.view_name - Materialiserte innsjøvisningsnavn er kasus-sensitive og konverteres til små bokstaver (for eksempel
MyTestViewblir ).mytestview
Argumenter
| Parameter | Bekrivelse |
|---|---|
OR REPLACE |
Overskriver enhver eksisterende materialisert innsjøutsikt med samme navn. Kan ikke kombineres med IF NOT EXISTS. |
IF NOT EXISTS |
Skaper den materialiserte innsjøutsikten bare hvis den ikke allerede eksisterer. Utsagnet lykkes uten feil hvis visningen allerede er definert. Kan ikke kombineres med OR REPLACE. |
MLV_Identifier |
Navnet på den materialiserte utsikt over innsjøen. Kan være fullt kvalifisert som workspace.lakehouse.schema.name. |
CONSTRAINT ... CHECK |
Definerer en datakvalitetsregel. Klausulen CHECK spesifiserer et boolsk uttrykk som hver rad må oppfylle. Du kan definere flere begrensninger. |
ON MISMATCH |
Handling å ta når en rad bryter en begrensning.
DROP fjerner lydløst raden; FAIL Stopper oppdateringen med en feilmelding. Standard er FAIL. |
PARTITIONED BY |
Kolonner for å partisjonere den materialiserte innsjøvisningen etter, noe som kan forbedre spørringsytelsen for filtrerte lesninger. |
COMMENT |
Fritekstbeskrivelse lagret sammen med den materialiserte innsjøutsiktsdefinisjonen. |
TBLPROPERTIES |
Nøkkelverdipar lagret som metadata på den materialiserte innsjøvisningen. |
AS select_statement |
Spørringen SELECT som definerer dataene i den materialiserte innsjøvisningen. |
Eksempler
Følgende eksempel skaper en materialisert innsjøvisning med en datakvalitetsbegrensning, en kommentar og partisjonering. Klausulen OR REPLACE overskriver enhver eksisterende visning med samme navn.
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
Følgende eksempel gir en enklere materialisert innsjøutsikt. Klausulen IF NOT EXISTS forhindrer en feil hvis visningen allerede eksisterer, noe som gjør den trygg for distribusjonsskript.
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
Oppfrisk materialisert innsjøutsikt fra hytta di
Etter at du har laget dine materialiserte innsjøutsikter, ikke orkestrer oppdateringen fra en notatbok. Bruk i stedet de to innebygde funksjonene på innsjøhuset:
- Lineage: Fabric utleder avhengighetsrekkefølgen mellom dine materialiserte innsjøutsikter fra deres definisjoner. For å åpne linjevisningen, velg fanen Materialiserte innsjøvisninger i båndet, og velg deretter Administrer. Derfra kan du følge en pågående kjøring og inspisere avhengigheter oppstrøms og nedstrøms for hver visning.
- Planlagt oppdatering: Fra samme Administrer-visning , lag en eller flere tidsplaner for å oppdatere alle materialiserte innsjøvisninger eller et valgt delsett. Hver plan kjører uavhengig og oppdaterer visninger i avhengighetsrekkefølge, så nedstrømsvisninger leser alltid ferske data fra sine oppstrømsvisninger. Fabric prøver transiente feil for deg.
Bruk notatbøker til å skrive og iterere på dine materialiserte definisjoner av innsjøutsikt. La lineage og planlagt oppdatering håndtere rekkefølge, utførelse og forsøk — for pålitelige, repeterbare data med mindre kode å vedlikeholde.
Få en liste over materialiserte innsjøvisninger
For å få listen over alle materialiserte lake-visninger i et skjema, bruk følgende syntaks:
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
For eksempel, for å liste opp alle materialiserte innsjøutsikter i skjemaet silver :
SHOW MATERIALIZED LAKE VIEWS IN silver;
Hente setningen som opprettet en materialisert innsjøvisning
For å få CREATE utsagnet for en materialisert lake-visning, bruk følgende syntaks:
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
For eksempel, for å hente definisjonen av products_with_sales:
SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;
Oppdatere en materialisert utsikt over innsjøen
For å endre definisjonen av en materialisert innsjøvisning (som SELECT spørring, begrensninger eller partisjonering), bruk kommandoen CREATE OR RESTORE. Alternativt kan du slette den eksisterende visningen og lage den på nytt.
Gi nytt navn til en materialisert innsjøutsikt
For å gi nytt navn til en eksisterende materialisert innsjøutsikt, bruk kommandoen ALTER MATERIALIZED LAKE VIEW . Syntaksen er:
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
For eksempel, for å gi nytt navn:products_with_sales
ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;
Merk deg
Kommandoen ALTER MATERIALIZED LAKE VIEW støttes kun for omdøping. For å endre definisjonen eller andre egenskaper (som SELECT spørring, begrensninger eller partisjonering), se Oppdater en materialisert innsjøvisning.
Slett en materialisert innsjøutsikt
Du kan slette en materialisert innsjøvisning ved å bruke Delete-alternativet i lakehouse-objektutforskeren eller ved å kjøre en DROP kommando. Syntaksen er:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
For eksempel, for å slette products_with_sales:
DROP MATERIALIZED LAKE VIEW products_with_sales;
Merk deg
Hvis du slipper eller gir nytt navn til en materialisert innsjøvisning, påvirkes avstammingsvisningen og planlagt oppdatering. Pass på at du oppdaterer referansen i alle avhengige materialiserte innsjøvisninger.
Gjeldende begrensninger
Følgende begrensninger gjelder for Spark SQL-setningene for materialiserte innsjøutsikter:
-
Skjemanavn — Skjemanavn med store bokstaver (for eksempel
MYSCHEMA) støttes ikke. Bruk blandede eller små bokstaver. -
Ingen data manipulation language (DML)-setninger — Du kan ikke kjøre
INSERT,UPDATE, ellerDELETEsetninger mot en materialisert lake-visning. Data fylles kun avSELECTspørringen i definisjonen. -
Ingen tidsreise-spørringer — Spørringen
SELECTi en materialisert lake view-definisjon kan ikke bruke Delta Lake tidsreisesyntaks (for eksempel,VERSION AS OFellerTIMESTAMP AS OF). -
Ingen brukerdefinerte funksjoner — Brukerdefinerte funksjoner (UDF) støttes ikke i
SELECTspørringen som definerer en materialisert innsjøvisning. -
Ingen midlertidige visninger som kilder — Spørringen
SELECTkan referere tabeller og andre materialiserte innsjøvisninger, men ikke midlertidige visninger. -
Sesjonsnivå Spark-egenskaper — Spark-konfigurasjonsegenskaper satt på sesjonsnivå (for eksempel
spark.conf.set(...)) brukes ikke under en planlagt oppdatering. Sett eiendommer på lakehouse- eller arbeidsområdenivå i stedet.