Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Denne artikel giver Spark SQL-syntaksen til oprettelse, liste, omdøbning og sletning af materialiserede lake-visninger i Fabric.
Tips
For at skabe din første materialiserede søudsigt, se Kom i gang med materialiserede søudsigter.
Oprette en materialiseret søvisning
Du kan definere en materialiseret søvisning fra en hvilken som helst tabel eller fra en anden materialiseret søvisning i et sø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]
)]
[(
REFRESH_HINT <hint_name> UNIQUE (<column1> [, <column2>, ...])
)]
[PARTITIONED BY (col1, col2, ... )]
[COMMENT "description or comment"]
[TBLPROPERTIES ("key1"="val1", "key2"="val2", ... )]
AS select_statement
Notat
- Er
REFRESH_HINTi forhåndsvisning. For flere detaljer om brug af opdateringstips, se Aktivér optimal opdatering for sletninger og opdateringer i materialiserede søvisninger (forhåndsvisning). - Hvis dit arbejdsområdenavn indeholder mellemrum, indheg det i backticks:
`My Workspace`.lakehouse.schema.view_name - Materialiserede lake-view-navne er små bogstaver og konverteres til små bogstaver (for eksempel
MyTestViewbliver ).mytestview
Argumenter
| Parameter | Beskrivelse |
|---|---|
OR REPLACE |
Overskriver enhver eksisterende materialiseret søudsigt med samme navn. Kan ikke kombineres med IF NOT EXISTS. |
IF NOT EXISTS |
Skaber kun den materialiserede søudsigt, hvis den ikke allerede eksisterer. Udsagnet lykkes fejlfrit, hvis visningen allerede er defineret. Kan ikke kombineres med OR REPLACE. |
MLV_Identifier |
Navnet på den materialiserede søvisning. Kan være fuldt kvalificeret som workspace.lakehouse.schema.name. |
CONSTRAINT ... CHECK |
Definerer en datakvalitetsregel. Klausulen CHECK specificerer et boolesk udtryk, som hver række skal opfylde. Du kan definere flere begrænsninger. |
ON MISMATCH |
Handling at tage, når en række overtræder en begrænsning.
DROP fjerner lydløst rækken; FAIL Stopper opdateringen med en fejl. Standard er FAIL. |
REFRESH_HINT |
Deklarerer en eller flere kolonner, der entydigt identificerer rækker, til inkrementel behandling af opdateringer og sletninger (forhåndsvisning). |
PARTITIONED BY |
Kolonner til at opdele den materialiserede søvisning efter, hvilket kan forbedre forespørgselsydelsen for filtrerede læsninger. |
COMMENT |
Fritekstbeskrivelse gemt med den materialiserede søudsigtsdefinition. |
TBLPROPERTIES |
Nøgleværdipar gemt som metadata på den materialiserede søvisning. |
AS select_statement |
Forespørgslen SELECT , der definerer dataene i det materialiserede søvisning. |
Eksempler
Følgende eksempel skaber en materialiseret lake-visning med en datakvalitetsbegrænsning, en kommentar og partitionering. 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 skaber et enklere materialiseret søbillede. Klausulen IF NOT EXISTS forhindrer fejl, hvis visningen allerede eksisterer, hvilket gør den sikker for deployment-scripts.
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
Vedligehold materialiseret søudsigt fra dit søhus
Når du har skabt dine materialiserede søudsigter, skal du ikke orkestrere deres opdatering fra en notesbog. Brug i stedet de to indbyggede funktioner på søhuset:
- Lineage: Fabric udleder afhængighedsrækkefølgen mellem dine materialiserede søudsigter ud fra deres definitioner. For at åbne linjevisningen skal du vælge fanen Materialiserede søvisninger i båndet, og derefter vælge Styr. Derfra kan du følge et kørsel i gang og inspicere opstrøms og nedstrøms afhængigheder for hver visning.
- Planlagt opdatering: Fra samme Administrér-visning opret en eller flere tidsplaner for at opdatere alle materialiserede søudsigter eller et udvalgt delmængde. Hver tidsplan kører uafhængigt og opdaterer visninger i afhængighedsrækkefølge, så downstream-visninger læser altid friske data fra deres upstream-visninger. Fabric prøver at genoverveje forbigående fejl for dig.
Brug notesbøger til at skrive og iterere på dine materialiserede lake view-definitioner. Lad lineage og planlagt opdatering håndtere rækkefølge, udførelse og genforsøg — for pålidelige, gentagelige data med mindre kode at vedligeholde.
Indtast filer med USING OneLake_Files
Ud over at definere en materialiseret lake-visning fra tabeller, kan du også definere en, der indlæser CSV- eller Parquet-filer direkte fra OneLake. En filindlæsningsvisning bruges USING OneLake_Files sammen med en fysisk OneLake-mappe, en OneLake-mappegenvej eller en enkeltfilsti. Du kan valgfrit bruge en FROM-less-klausul AS SELECT til at filtrere, forme og aggregere kilden, efterhånden som den indlæses.
Følgende tabel viser, hvilken syntaks der gælder for hver forfatterstil:
| Aspekt | Tabelbaseret materialiseret søudsigt | Filbaseret materialiseret søudsigt |
|---|---|---|
| Kilde | Tabeller eller andre materialiserede søudsigter | En fysisk OneLake-mappe, OneLake-mappegenvej eller enkeltfil |
| Definition | AS select_statement |
USING OneLake_Files
+
OPTIONS + valgfrit FROM-less AS SELECT |
| Formater | Enhver forespørgebar tabel | CSV, Parquet |
| Skema | Afledt af SELECT |
schema_mode
=
DYNAMIC eller FIXED |
| Kildelinje | Upstream-tabeller/visninger | Kildeplacering; projicere eventuelt kildemetadata-kolonnen __filepath__ , når du har brug for sporbarhed pr. række filer |
| Typisk lag | Sølv, guld | Bronze |
| Datakvalitetsbegrænsninger | Understøttet | Understøttet ved indtagelse |
Syntaks
CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS] [workspace.lakehouse.schema].MLV_Identifier
[(
CONSTRAINT constraint_name CHECK (condition) ON MISMATCH DROP | FAIL
)]
USING OneLake_Files
OPTIONS (
'format' = 'csv' | 'parquet',
'path' = 'abfss://<workspace>@<host>/<lakehouse>/Files/<folder-or-file>',
['header' = 'true' | 'false',]
['delimiter' = '<char>',]
[...]
)
[PARTITIONED BY (column_name [, ...])]
[COMMENT "description"]
[TBLPROPERTIES (
'schema_mode' = 'DYNAMIC' | 'FIXED',
'refresh_mode' = 'APPEND_ONLY' | 'FULL' | 'MIRROR'
)]
[AS SELECT select_expression [...] [WHERE condition]
[GROUP BY expression [, ...]] [HAVING condition]]
Notat
Angiv ikke en FROM klausul i fil-ingestionen AS SELECT. Kilden er allerede bundet af USING OneLake_Files og muligheden path .
OPTIONS-reference
| Valgmulighed | Gælder for | Beskrivelse |
|---|---|---|
format |
CSV, Parquet | Kildefilformat. Understøttede værdier er csv og parquet. |
path |
CSV, Parquet | Fysisk OneLake-mappe, OneLake-mappegenvej eller enkeltfil ABFSS-sti. Filer tilgængelige i indlejrede undermapper indlæses rekursivt, når visningen oprettes. Brug en efterfølgende skråstreg til en mappe eller inkluder filendelsen for en enkelt fil. |
header |
CSV | Angiver om den første række i hver fil indeholder kolonnenavne. Som standard er det false. |
delimiter |
CSV | Feltafgrænsetegnet (for eksempel , eller |). Som standard er det et komma. |
sep |
CSV | Alias for delimiter. |
quote |
CSV | Tegn brugt til at citere værdier. |
escape |
CSV | Tegn brugt til at undslippe et citat inden for en allerede oplyst værdi. |
nullValue |
CSV | Streng, der repræsenterer en nulværdi. |
ignoreLeadingWhiteSpace |
CSV | Om man skal fjerne ledende mellemrum fra værdier. |
ignoreTrailingWhiteSpace |
CSV | Om man skal fjerne trailing spaces fra værdier. |
multiLine |
CSV | Om en oplyst værdi kan spænde over flere linjer. Som standard er det false. |
dateFormat |
CSV | Java-dateringsmønsteret bruges til at analysere datoværdier, såsom MM/dd/yyyy. |
timestampFormat |
CSV | Java-tidsstempelmønster bruges til at parse tidsstempelværdier. |
encoding |
CSV | Tegnkodning, såsom UTF-8, , , UTF-16, eller Windows-1252ISO-8859-1. |
comment |
CSV | Karakter, der markerer en linje som en kommentar, der skal springes over. |
inferSchema |
CSV | Om man skal udlede kolonnetyper. Når false, læses kolonnerne som strenge. Brug FIXED skema-tilstand, når du deaktiverer inferens. |
columnNameOfCorruptRecord |
CSV | Navnet på en strengkolonne, der modtager den rå tekst for fejldannede rækker. Gyldige rækker indeholder NULL i denne kolonne. Inkluder kolonnen i AS SELECT outputtet. |
Vigtigt!
Fabric håndterer håndtering af misformede rækker. Sæt ikke Spark CSV-muligheden mode .
TBLPROPERTIES-reference
| Egenskab | Værdier | Beskrivelse |
|---|---|---|
schema_mode |
DYNAMIC (standard), FIXED |
DYNAMIC tilføjer nyligt opdagede kolonner og skriver NULL , når en fil ikke indeholder en etableret kolonne.
FIXED fastholder skemaet ved oprettelsen og afviser efterfølgende drift. |
refresh_mode |
APPEND_ONLY, FULL, MIRROR |
For mapper APPEND_ONLY tilføjer den rækker fra nye filer, FULL behandler den aktuelle mappe som et snapshot og MIRROR afspejler filtilføjelser og sletninger. En enkeltfilkilde bruger FULL opdateringssemantik. |
Eksempel
Følgende eksempel indlæser en mappe med CSV-filer med en header-række til en bronzevisning. Hver række får også en __filepath__ kolonne, der registrerer kildefilen, den blev læst fra.
CREATE MATERIALIZED LAKE VIEW bronze.raw_orders
USING OneLake_Files
OPTIONS (
'format' = 'csv',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/orders/',
'header' = 'true'
)
TBLPROPERTIES (
'schema_mode' = 'DYNAMIC',
'refresh_mode' = 'APPEND_ONLY'
);
Du kan derefter bygge nedstrøms sølv- og guldmaterialiserede søudsigter, der vælger fra bronze.raw_orders; Fabric registrerer afhængigheden og opdaterer dem i rækkefølge. For at spore filer gennem pipelinen, se Manage Fabric materialized lake views lineage.
Filtrer, transformer og valider filer under indlæsning
Brug en FROM-less AS SELECT til at vælge kolonner, filtrere rækker, kaste værdier, tilføje beregnede kolonner, aggregere data eller anvende vinduesfunktioner. Fil-indlæsningsbegrænsninger kører mod det projicerede output, så en begrænsning kan referere til et beregnet alias.
Følgende eksempel fanger fejldannede rækker, anvender en række-niveau datakvalitetsregel, filtrerer inputtet og opdeler det materialiserede output:
CREATE MATERIALIZED LAKE VIEW silver.valid_orders
(
CONSTRAINT positive_amount
CHECK (order_amount > 0) ON MISMATCH DROP
)
USING OneLake_Files
OPTIONS (
'format' = 'csv',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/orders/',
'header' = 'true',
'multiLine' = 'true',
'dateFormat' = 'MM/dd/yyyy',
'timestampFormat' = 'MM/dd/yyyy HH:mm:ss',
'encoding' = 'ISO-8859-1',
'comment' = '#',
'columnNameOfCorruptRecord' = '_corrupt_record'
)
PARTITIONED BY (region)
COMMENT "Valid orders ingested from CSV"
TBLPROPERTIES (
'schema_mode' = 'DYNAMIC',
'refresh_mode' = 'FULL'
)
AS SELECT
order_id,
region,
CAST(amount AS DECIMAL(18,2)) AS order_amount,
CASE WHEN amount >= 1000 THEN 'high' ELSE 'standard' END AS order_band,
_corrupt_record,
__filepath__,
current_timestamp() AS ingested_at;
Forespørg indfangede rækker til inspektion eller udbedring:
SELECT
_corrupt_record,
__filepath__,
ingested_at
FROM silver.valid_orders
WHERE _corrupt_record IS NOT NULL;
Du kan også skabe aggregerede eller vinduesbaserede materialiserede resultater direkte fra filer:
CREATE MATERIALIZED LAKE VIEW gold.sales_by_region
USING OneLake_Files
OPTIONS (
'format' = 'parquet',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/sales/'
)
TBLPROPERTIES ('schema_mode' = 'DYNAMIC', 'refresh_mode' = 'FULL')
AS SELECT
region,
COUNT(*) AS order_count,
SUM(amount) AS total_amount,
AVG(amount) AS average_amount
GROUP BY region
HAVING SUM(amount) > 0;
Understøttede udtryk inkluderer standard Spark SQL aritmetik, aggregerede, statistiske, vindues- og rangordningsfunktioner.
Indtag en enkelt fil
Sæt path til en CSV- eller Parquet-fil i stedet for en mappe. En enkeltfil-kilde bruger FULL refresh-semantik, så udskiftning af filen erstatter det materialiserede resultat.
CREATE MATERIALIZED LAKE VIEW bronze.monthly_snapshot
USING OneLake_Files
OPTIONS (
'format' = 'parquet',
'path' = 'abfss://SalesWorkspace@onelake.dfs.fabric.microsoft.com/SalesLake.Lakehouse/Files/snapshots/2026-08.parquet'
)
TBLPROPERTIES (
'schema_mode' = 'FIXED',
'refresh_mode' = 'FULL'
);
Notat
Når du bruger FIXED skema, og kildemappen indeholder flere filer med forskellige skemaer på tidspunktet for den indledende CREATE, fejler visningen, fordi den ikke kan afstemme et enkelt fast skema. Peg FIXED visninger på filer, der deler ét skema, eller brug DYNAMIC. Dette er en kendt begrænsning, lignende fast-skema-adfærd i genvejstransformationer.
Vigtigt!
Kildestier, der indeholder et rå rum eller %20 ikke accepteres i øjeblikket. Du kan bruge en OneLake-mappegenvej som kilde: oprettelse indlæser filer, der er tilgængelige ved genvejsroden og i indlejrede mapper. Managed refresh opdager nye filer, der er tilføjet ved genvejsroden, men opdager ikke rekursivt nye filer, der er tilføjet under indlejrede genvejsmapper.
Tips
For at genbehandle hele kildemappen efter behov, kør REFRESH MATERIALIZED LAKE VIEW <name> FULL;. Som med tabelbaserede visninger, skal du ikke orkestrere løbende opdatering fra en notesbog – brug Lineage og Scheduled refresh til automatisk at hente nye filer.
Få en liste over materialiserede søudsigter
For at få listen over alle materialiserede søudsigter i et skema, brug følgende syntaks:
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
For eksempel for at liste alle materialiserede søudsigter i skemaet silver :
SHOW MATERIALIZED LAKE VIEWS IN silver;
Hente den sætning, der oprettede en materialiseret søvisning
For at få udsagnet CREATE for en materialiseret lake-visning, brug følgende syntaks:
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
For eksempel, for at hente definitionen af products_with_sales:
SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;
Opdater en materialiseret søvisning
For at ændre definitionen af en materialiseret søvisning (såsom SELECT forespørgslen, begrænsninger eller partitionering), brug kommandoen CREATE OR RESTORE. Alternativt kan du slette den eksisterende visning og genskabe den.
Omdøb en materialiseret søudsigt
For at omdøbe et eksisterende materialiseret søsyn, brug kommandoen ALTER MATERIALIZED LAKE VIEW . Syntaksen er:
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
For eksempel at omdøbe products_with_sales:
ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;
Notat
Kommandoen ALTER MATERIALIZED LAKE VIEW understøttes kun til omdøbning. For at ændre definitionen eller andre egenskaber (såsom SELECT forespørgslen, begrænsninger eller opdeling), se Opdater en materialiseret søvisning.
Slet et materialiseret sø-view
Du kan slette en materialiseret søvisning ved at bruge Slet-muligheden i lakehouse-objektstifinderen eller ved at køre en DROP kommando. Syntaksen er:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
For eksempel for at slette products_with_sales:
DROP MATERIALIZED LAKE VIEW products_with_sales;
Notat
Hvis du slipper eller omdøber en materialiseret søvisning, påvirker det afstamningsvisningen og den planlagte opdatering. Sørg for at opdatere referencen i alle afhængige materialiserede søvisninger.
Aktuelle begrænsninger
Følgende begrænsninger gælder for Spark SQL-sætningerne for materialiserede søvisninger:
-
Skemanavne — Skemanavne med store bogstaver (for eksempel
MYSCHEMA) understøttes ikke. Brug blandede bogstaver eller små bogstaver. -
Ingen data manipulation language (DML) udsagn — Du kan ikke køre
INSERT,UPDATE, ellerDELETEudsagn mod en materialiseret lake view. Data udfyldes kun af forespørgslenSELECTi definitionen. -
Ingen tidsrejseforespørgsler — Forespørgslen
SELECTi en materialiseret lake view-definition kan ikke bruge Delta Lake tidsrejsesyntaks (for eksempel,VERSION AS OFellerTIMESTAMP AS OF). -
Ingen brugerdefinerede funktioner — Brugerdefinerede funktioner (UDF'er) understøttes ikke i forespørgslen,
SELECTder definerer en materialiseret lake-visning. -
Ingen midlertidige visninger som kilder — Forespørgslen
SELECTkan referere til tabeller og andre materialiserede søudsigter, men ikke midlertidige visninger. -
Sessionsniveau Spark-egenskaber — Spark-konfigurationsegenskaber sat på sessionsniveau (for eksempel
spark.conf.set(...)) anvendes ikke under en planlagt opdatering. Sæt ejendomme på søhus- eller arbejdsområdeniveau i stedet. -
Filindlæsning — Filindlæsningsvisninger understøtter kun CSV og Parquet. En
FIXED-schema-visning fejler, hvis kildemappen indeholder filer med forskellige skemaer ved oprettelse. Kildestier kan ikke indeholde mellemrum. OneLake-mappegenveje understøttes som kilder, men managed refresh opdager ikke rekursivt filer, der er tilføjet under indlejrede genvejsmapper.