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.
Inmata filer med USING OneLake_Files
Förutom att definiera en materialiserad sjövy från tabeller kan du definiera en som tar in CSV- eller Parquet-filer direkt från OneLake. En filinsamlingsvy används USING OneLake_Files tillsammans med en fysisk OneLake-mapp, en OneLake-mappgenväg eller en enda filväg. Du kan valfritt använda en FROM-less-klausul AS SELECT för att filtrera, forma och aggregera källan när den tas in.
Följande tabell visar vilken syntax som gäller för varje författarstil:
| Aspect | Tabellbaserad materialiserad sjövy | Filbaserad materialiserad sjövy |
|---|---|---|
| Source | Tabeller eller andra materialiserade sjövyer | En fysisk OneLake-mapp, OneLake-mappgenväg eller enskild fil |
| Definition | AS select_statement |
USING OneLake_Files
+
OPTIONS + valfritt utan FROM AS SELECT |
| Format | Vilken frågebar tabell som helst | CSV, Parquet |
| Schema | Härlett från SELECT |
schema_mode
=
DYNAMIC eller FIXED |
| Källlinje | Uppströmstabeller/vyer | Källposition; inkludera eventuellt kolumnen __filepath__ för källmetadata när du behöver filspårbarhet för varje rad |
| Typiskt lager | Silver, guld | Brons |
| Datakvalitetsbegränsningar | Understödd | Stöds vid inmatning |
Syntax
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]]
Anmärkning
Specificera inte någon FROM klausul i fil-ingestion AS SELECT. Källan är redan bunden av USING OneLake_Files och optionen path .
Referens för OPTIONS
| Alternativ | Gäller för | Beskrivning |
|---|---|---|
format |
CSV, Parquet | Källfilformat. Värden som stöds är csv och parquet. |
path |
CSV, Parquet | Fysisk OneLake-mapp, OneLake-mappgenväg eller ABFSS-sökväg till en enskild fil. Filer som finns tillgängliga i nästlade undermappar importeras rekursivt när vyn skapas. Använd ett snedstreck för en mapp eller inkludera filändelsen för en enskild fil. |
header |
CSV | Anger om den första raden i varje fil innehåller kolumnnamn. Standardinställningen är false. |
delimiter |
CSV | Fältavgränsare (till exempel, , eller |). Standardvärdet är ett kommatecken. |
sep |
CSV | Alias för delimiter. |
quote |
CSV | Tecken som används för att citera värden. |
escape |
CSV | Tecken används för att undkomma ett citat i ett redan angivet värde. |
nullValue |
CSV | Sträng som representerar ett null-värde. |
ignoreLeadingWhiteSpace |
CSV | Om man ska ta bort ledande mellanrum från värden. |
ignoreTrailingWhiteSpace |
CSV | Om man ska ta bort efterföljande mellanrum från värden. |
multiLine |
CSV | Om ett angivet värde kan sträcka sig över flera linjer. Standardinställningen är false. |
dateFormat |
CSV | Java-datummönster används för att tolka datumvärden, såsom MM/dd/yyyy. |
timestampFormat |
CSV | Java-tidsstämpelmönster används för att tolka tidsstämpelvärden. |
encoding |
CSV | Teckenkodning, såsom UTF-8, , , UTF-16, eller Windows-1252ISO-8859-1. |
comment |
CSV | Karaktär som markerar en rad som en kommentar att hoppa över. |
inferSchema |
CSV | Om man ska dra slutsatser om kolumntyper. När false, läses kolumnerna som strängar. Använd FIXED schemaläge när du inaktiverar inferens. |
columnNameOfCorruptRecord |
CSV | Namnet på en strängkolumn som tar emot råtexten för felaktigt bildade rader. Giltiga rader innehåller NULL i denna kolumn. Inkludera kolumnen i utdatan AS SELECT . |
Important
Fabric hanterar hantering av missformade rader. Ange inte alternativet Spark CSV mode.
TBLPROPERTIES-referens
| Property | Värden | Beskrivning |
|---|---|---|
schema_mode |
DYNAMIC (standard), FIXED |
DYNAMIC lägger till nyupptäckta kolumner och skriver NULL när en fil inte innehåller en etablerad kolumn.
FIXED fäster schemat vid skapandet och avvisar efterföljande drift. |
refresh_mode |
APPEND_ONLY, FULL, MIRROR |
För mappar APPEND_ONLY lägger den till rader från nya filer, FULL bearbetar den aktuella mappen som en snapshot och MIRROR speglar filtillägg och borttagningar. En källa med en enda fil använder FULL semantik för uppdatering. |
Example
Följande exempel läser in en mapp med CSV-filer med en rubrikrad i en bronsvy. Varje rad får också en __filepath__ kolumn som registrerar källfilen den lästes från.
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 sedan bygga nedströms silver- och guldmaterialiserade sjövyer som väljer från bronze.raw_orders; Fabric registrerar beroendet och uppdaterar dem i ordning. För att spåra filer genom pipelinen, se Manage Fabric materialized lake views lineage.
Filtrera, transformera och validera filer under inmatning
Använd en FROM-less AS SELECT för att välja kolumner, filtrera rader, gjuta värden, lägga till beräknade kolumner, aggregera data eller tillämpa fönsterfunktioner. Begränsningar för filinmatning tillämpas på det projicerade resultatet, så en begränsning kan hänvisa till ett beräknat alias.
Följande exempel fångar felaktiga rader, tillämpar en radnivå-datakvalitetsregel, filtrerar indata och delar upp den materialiserade utdatan:
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;
Sök fångade rader för inspektion eller sanering:
SELECT
_corrupt_record,
__filepath__,
ingested_at
FROM silver.valid_orders
WHERE _corrupt_record IS NOT NULL;
Du kan också skapa aggregerade eller fönsterbaserade materialiserade resultat direkt från 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;
Stödda uttryck inkluderar standard Spark SQL-aritmetik, aggregerade, statistiska, fönster- och rangordningsfunktioner.
Inmata en enda fil
Ställ path in en CSV- eller Parquet-fil istället för en mapp. En källa med en enda fil använder FULL uppdateringssemantik, så att byta ut filen ersätter det materialiserade resultatet.
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'
);
Anmärkning
När du använder FIXED schema och källmappen innehåller flera filer med olika scheman vid tidpunkten för det initiala CREATE, misslyckas vyn eftersom den inte kan stämma med ett enda fast schema. Låt FIXED vyer peka på filer som använder samma schema, eller använd DYNAMIC. Detta är en känd begränsning, liknande fast schema-beteende i genvägstransformationer.
Important
Källvägar som innehåller ett råutrymme eller %20 accepteras inte för tillfället. Du kan använda en OneLake-mappgenväg som källa: creation tar in filer som finns tillgängliga vid genvägsroten och i nästlade mappar. Managed refresh upptäcker nya filer som lagts till vid genvägsroten, men upptäcker inte rekursivt nya filer som lagts till under inbäddade genvägsmappar.
Tips/Råd
För att bearbeta hela källmappen på begäran, kör REFRESH MATERIALIZED LAKE VIEW <name> FULL;. Precis som med tabellbaserade vyer, orkestrera inte löpande uppdatering från en anteckningsbok – använd Lineage och Scheduled refresh för att automatiskt hämta nya filer.
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. -
Filinsamling — Filinmatningsvyer stöder endast CSV och Parquet. En
FIXED-schema-vy misslyckas om källmappen innehåller filer med olika scheman vid skapandetillfället. Källvägar kan inte innehålla mellanrum. OneLake-mappgenvägar stöds som källor, men managed refresh hittar inte rekursivt filer som lagts till under nästlade genvägsmappar.