Spark SQL-referanse for materialiserte innsjøvisninger

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 MyTestView blir ).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, eller DELETE setninger mot en materialisert lake-visning. Data fylles kun av SELECT spørringen i definisjonen.
  • Ingen tidsreise-spørringer — Spørringen SELECT i en materialisert lake view-definisjon kan ikke bruke Delta Lake tidsreisesyntaks (for eksempel, VERSION AS OF eller TIMESTAMP AS OF).
  • Ingen brukerdefinerte funksjoner — Brukerdefinerte funksjoner (UDF) støttes ikke i SELECT spørringen som definerer en materialisert innsjøvisning.
  • Ingen midlertidige visninger som kilder — Spørringen SELECT kan 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.