Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tämä artikkeli tarjoaa Spark SQL -syntaksin materiaalisoitujen järvinäkymien luomiseen, listaamiseen, uudelleennimeämiseen ja poistamiseen Fabric-ohjelmassa.
Vinkki
Ensimmäisen materialisoidun järvinäkymän luomiseksi katso Aloita materialisoiduista järvinäkymistä.
Luo materialisoitunut järvinäkymä
Voit määrittää materialisoidun järvinäkymän mistä tahansa taulukosta tai toisesta materialisoidusta järvinäkymästä lakehousessa.
Syntaksi
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
Huomautus
- Se
REFRESH_HINTon esikatselussa. Lisätietoja päivitysvihjeiden käytöstä löytyy kohdasta Optimaalisen päivitys käyttöön poistoille ja päivityksille materialisoituissa järvinäkymissä (esikatselu). - Jos työtilasi nimi sisältää välilyöntejä, sulje se takatikkeihin:
`My Workspace`.lakehouse.schema.view_name - Materialisoidut järvinäkymän nimet ovat kirjainkoon liittymättömiä ja muunnetaan pienaakkosiksi (esimerkiksi
MyTestViewmuuttuumytestview).
Argumentit
| Parametri | Kuvaus |
|---|---|
OR REPLACE |
Korvaa kaikki olemassa olevat samanniminen järvinäkymä. Ei voi yhdistää .IF NOT EXISTS |
IF NOT EXISTS |
Luo materialisoidun järvinäkymän vain, jos sitä ei vielä ole olemassa. Väite onnistuu virheettömästi, jos näkymä on jo määritelty. Ei voi yhdistää .OR REPLACE |
MLV_Identifier |
Muodostettu järvinäkymän nimi. Voidaan täysin määritellä .workspace.lakehouse.schema.name |
CONSTRAINT ... CHECK |
Määrittelee datan laadun säännön. Lauseke CHECK määrittelee Boolen lausekkeen, jonka jokaisen rivin on täytettävä. Voit määritellä useita rajoitteita. |
ON MISMATCH |
Toimenpide, joka tehdään, kun rivi rikkoo rajoitetta.
DROP hiljaa poistaa rivin; FAIL pysäyttää päivityksen virheellä. Oletusarvo on FAIL. |
REFRESH_HINT |
Määrittelee yhden tai useamman sarakkeen, jotka yksilöivät rivit päivitysten ja poistojen inkrementaalista käsittelyä varten (esikatselu). |
PARTITIONED BY |
Sarakkeet, joiden mukaan materiaalisoitu järvinäkymä jaetaan, mikä voi parantaa suodatettujen lukujen kyselyjen suorituskykyä. |
COMMENT |
Vapaatekstikuvaus tallennettuna materialisoidun järven näkymän määritelmän kanssa. |
TBLPROPERTIES |
Avain-arvoparit tallennetaan metatietoina materialisoidussa järven näkymässä. |
AS select_statement |
Kysely SELECT , joka määrittelee datan materialisoidussa järvinäkymässä. |
Esimerkkejä
Seuraava esimerkki luo materialisoidun järvinäkymän, jossa on datan laaturajoite, kommentti ja osiointi. Lauseke OR REPLACE korvaa kaikki olemassa olevat samannimisen näkymät.
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
Seuraava esimerkki luo yksinkertaisemman materialisoidun järvinäkymän. Lauseke IF NOT EXISTS estää virheen, jos näkymä on jo olemassa, tehden siitä turvallisen käyttöönottoskripteille.
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
Vinkki
Hallinnoi järvimaisemaa maisemaa järvimajastasi
Kun olet luonut materialisoidut järven näkymät, älä järjestä niiden päivitystä muistikirjasta. Sen sijaan käytä kahta järvenrakennuksen sisäänrakennettua ominaisuutta:
- Lineage: Fabric johtaa riippuvuusjärjestyksen materiaalisoitujen järvinäkymien välillä niiden määritelmistä. Avataksesi linjanäkymän, valitse nauhasta Materialisoidut järven näkymät -välilehti ja valitse sitten Hallinnoi. Sen jälkeen voit seurata käynnissä olevaa suoritusta ja tarkastella ylä- ja alavirran riippuvuuksia jokaiselle näkymälle.
- Aikataulutettu päivitys: Luo samasta Hallinnoi-näkymästä yksi tai useampi aikataulu päivittääksesi kaikki materialisoidut järvinäkymät tai valitun osajoukon. Jokainen aikataulu pyörii itsenäisesti ja päivittää näkymät riippuvuusjärjestyksessä, joten alavirran näkymät lukevat aina tuoretta dataa ylävirran näkymistä. Fabric yrittää tilapäiset epäonnistumiset uudelleen puolestasi.
Käytä muistikirjoja kirjoittaaksesi ja iteroidaksesi materiaalisoituja järvinäkymän määritelmiä. Anna lineagen ja ajoitetun päivityksen hoitaa järjestys, suoritus ja uudelleenyritykset — luotettavaa, toistettavaa dataa ja vähemmän koodia ylläpidettäväksi.
Tiedostojen vastaanotto USING OneLake_Files
Materialisoidun järvinäkymän määrittämisen lisäksi tauluista voit määritellä sellaisen, joka vastaanottaa CSV- tai Parquet-tiedostoja suoraan OneLakesta.
Tiedostojen vastaanottonäkymä käyttää USING OneLake_Files fyysistä OneLake-kansiota, OneLake-kansion pikakuvaketta tai yksittäistä tiedostopolkua. Voit halutessasi käyttää FROM-less-lauseketta AS SELECT lähteen suodattamiseen, muotoiluun ja aggregointiin sitä mukaa kun se on otettu.
Seuraava taulukko näyttää, mikä syntaksi soveltuu kuhunkin kirjoitustyyliin:
| Ominaisuus | Taulukkopohjainen materialisoitu järvikuva | Tiedostopohjainen materialisoitu järvinäkymä |
|---|---|---|
| Lähde | Pöydät tai muut materialisoidut järvinäkymät | Fyysinen OneLake-kansio, OneLake-kansion pikakuvake tai yksittäinen tiedosto |
| Määritys | AS select_statement |
USING OneLake_Files
+
OPTIONS + valinnainen FROM-less AS SELECT |
| Muotoilut | Mikä tahansa kyselytön taulukko | CSV, Parquet |
| Skeema | Johdettu SELECT |
schema_mode
=
DYNAMIC tai FIXED |
| Lähdesuku | Ylävirran taulukot/näkymät | Lähteen sijainti; voit halutessasi projisoida lähdemetatietosarakkeen __filepath__ , kun tarvitset tiedostokohtaista jäljitettävyyttä per rivi |
| Tyypillinen kerros | Hopea, kulta | Pronssi |
| Datan laaturajoitteet | Tuettu | Tuettu nielemisen yhteydessä |
Syntaksi
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]]
Huomautus
Älä määrittele FROM lauseketta tiedostojen vastaanotossa AS SELECT. Lähde on jo sidottu USING OneLake_Files vaihtoehtoon path .
OPTIONS-viittaus
| Vaihtoehto | Koskee seuraavia: | Kuvaus |
|---|---|---|
format |
CSV, Parquet | Lähdetiedostomuoto. Tuetut arvot ovat csv ja parquet. |
path |
CSV, Parquet | Fyysinen OneLake-kansio, OneLake-kansion pikakuvake tai yksitiedostoinen ABFSS-polku. Sisäkkäisissä alikansioissa olevat tiedostot otetaan rekursiivisesti näkymän luomisen yhteydessä. Käytä viivanviivaa kansiolle tai lisää tiedostopääte yhdelle tiedostolle. |
header |
CSV | Kertoo, sisältääkö jokaisen tiedoston ensimmäisellä rivillä sarakkeen nimet. Oletusarvo on false. |
delimiter |
CSV | Kentän erottajamerkki (esimerkiksi, , tai |). Oletuksena on pilkku. |
sep |
CSV | Alias .delimiter |
quote |
CSV | Merkki, jota käytetään arvojen lainaamiseen. |
escape |
CSV | Merkki, jota käytetään poistumaan lainausmerkistä jo lainatun arvon sisällä. |
nullValue |
CSV | Merkkijono, joka edustaa nollaarvoa. |
ignoreLeadingWhiteSpace |
CSV | Poistaako arvoista etuvälit. |
ignoreTrailingWhiteSpace |
CSV | Poistetaanko arvoista jäljessä olevat välilyönnit. |
multiLine |
CSV | Voiko lainattu arvo ulottua useammalle linjalle. Oletusarvo on false. |
dateFormat |
CSV | Java-päivämääräkuvio, jota käytetään päivämääräarvojen jäsentämiseen, kuten MM/dd/yyyy. |
timestampFormat |
CSV | Java-aikaleimakuvio, jota käytetään aikaleiman arvojen jäsentämiseen. |
encoding |
CSV | Merkkikoodaus, kuten UTF-8, ISO-8859-1, UTF-16, tai Windows-1252. |
comment |
CSV | Hahmo, joka merkitsee viivan kommentiksi, jonka voi ohittaa. |
inferSchema |
CSV | Kannattaako päätellä saraketyyppejä. Kun false, sarakkeet luetaan merkkijonoina. Käytä FIXED skeematilaa, kun päättely poistetaan käytöstä. |
columnNameOfCorruptRecord |
CSV | Merkkijonosarakkeen nimi, joka vastaanottaa raakatekstin virheellisille riveille. Voimassa olevat rivit NULL sisältyvät tähän sarakkeeseen. Sisällytä sarake ulostuloon AS SELECT . |
Important
Fabric hallitsee väärismuotoisen rivien käsittelyä. Älä aseta Sparkin CSV-asetusta mode .
TBLPROPERTIES-viittaus
| Ominaisuus | Arvot | Kuvaus |
|---|---|---|
schema_mode |
DYNAMIC (oletus), FIXED |
DYNAMIC lisää vastikään löydetyt sarakkeet ja kirjoittaa NULL , kun tiedosto ei sisällä vakiintunutta saraketta.
FIXED kiinnittää skeeman luomishetkellä ja hylkää myöhemmän driftin. |
refresh_mode |
APPEND_ONLY, FULL, MIRROR |
Kansioille APPEND_ONLY lisää rivejä uusista tiedostoista, FULL käsittelee nykyisen kansion uudelleen snapshotiksi ja MIRROR heijastaa tiedostojen lisäykset ja poistot. Yksitiedostolähde käyttää FULL virkistyssemantiikkaa. |
Esimerkki
Seuraava esimerkki siirtää kansion CSV-tiedostoja, joissa on otsikkorivi, pronssinäkymään. Jokainen rivi saa myös sarakkeen __filepath__ , joka tallentaa lähdetiedoston, josta se on luettu.
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'
);
Voit sitten rakentaa alavirran hopea- ja kultamaterialisoituja järvinäkymiä, jotka valitsevat ; bronze.raw_ordersFabric tallentaa riippuvuuden ja päivittää ne järjestyksessä. Tiedostojen jäljittämiseksi putken läpi katso Manage Fabric materialized lake views lineage.
Suodata, muunna ja validoi tiedostoja vastaanoton aikana
Käytä FROM-less-tiedostoa AS SELECT sarakkeiden valintaan, rivien suodattamiseen, arvojen loittoon, laskettujen sarakkeiden lisäämiseen, datan kokoamiseen tai ikkunafunktioiden soveltamiseen. Tiedostojen vastaanottorajoitteet toimivat projisoitua tulosta vastaan, joten rajoite voi viitata laskettuun alias-nimeen.
Seuraava esimerkki tallentaa virheellistä riviä, soveltaa rivitason datan laatusääntöä, suodattaa syötteen ja jakaa materialisoidun tuloksen:
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;
Kysely kaapatuista riveistä tarkastusta tai korjausta varten:
SELECT
_corrupt_record,
__filepath__,
ingested_at
FROM silver.valid_orders
WHERE _corrupt_record IS NOT NULL;
Voit myös luoda koottuja tai ikkunallisia materialisoituja tuloksia suoraan tiedostoista:
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;
Tuettuja lausekkeita ovat perinteiset Spark SQL -aritmetiikka-, aggregaatti-, tilasto-, ikkuna- ja järjestysfunktiot.
Syötä yksi tiedosto
Aseta path CSV- tai Parquet-tiedosto kansion sijaan. Yksittäistiedostolähde käyttää FULL virkistyssemantiikkaa, joten tiedoston korvaaminen korvaa materialisoidun tuloksen.
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'
);
Huomautus
Kun käytät FIXED skeemaa ja lähdekansiossa on useita tiedostoja, joilla on eri skeemat alkuvaiheessa CREATE, näkymä epäonnistuu, koska se ei pysty sovittamaan yhteen yhtä kiinteää skeemaa. Osoita FIXED näkymiä tiedostoihin, jotka jakavat saman skeeman, tai käyttävät DYNAMIC. Tämä on tunnettu rajoitus, joka muistuttaa kiinteän skeeman käyttäytymistä pikakuvakemuunnoksissa.
Important
Lähdepolut, joissa on raaka tila tai %20 joita ei tällä hetkellä hyväksytä. Voit käyttää OneLake-kansion pikakuvaketta lähteenä: creation vastaanottaa tiedostoja, jotka ovat saatavilla pikakuvakkeen juuresta ja sisäkkäisissä kansioissa. Hallittu päivitys löytää uusia tiedostoja, jotka on lisätty pikakuvakkeen juuresta, mutta ei rekursiivisesti löydä uusia tiedostoja, jotka on lisätty sisäkkäisten pikakuvakekansioiden alle.
Vinkki
Koko lähdekansion uudelleenkäsittelyyn tarpeen mukaan suorita REFRESH MATERIALIZED LAKE VIEW <name> FULL;. Kuten taulukkopohjaisissa näkymissä, älä järjestä jatkuvaa päivitystä muistikirjasta — käytä Lineage - ja Scheduled refresh -toimintoja noutaaksesi uudet tiedostot automaattisesti.
Hanki luettelo toteutuneista järvinäkymistä
Saadaksesi listan kaikista materialisoituneista järvinäkymistä skeemassa, käytä seuraavaa syntaksia:
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
Esimerkiksi, jos listataan kaikki materialisoidut järvinäkymät kaaviossa silver :
SHOW MATERIALIZED LAKE VIEWS IN silver;
Hae lauseke, joka loi materialisoidun järvinäkymän
Materialisoidun järvinäkymän CREATE lauseen saamiseksi käytä seuraavaa syntaksia:
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
Esimerkiksi, jotta voidaan hakea määritelmä products_with_sales:
SHOW CREATE MATERIALIZED LAKE VIEW products_with_sales;
Materialisoidun Lake-näkymän päivittäminen
Materialisoidun järvinäkymän määritelmän muuttamiseksi (kuten SELECT kyselyä, rajoitteita tai osiointia) käytä CREATE OR REPLACE -komentoa. Vaihtoehtoisesti voit poistaa olemassa olevan näkymän ja luoda sen uudelleen.
Uudelleennimetä materialisoitu järvinäkymä
Jos haluat nimetä olemassa olevan materialisoidun järvinäkymän uudelleen, käytä komentoa ALTER MATERIALIZED LAKE VIEW . Syntaksi on seuraava:
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
Esimerkiksi nimetä products_with_salesuudelleen :
ALTER MATERIALIZED LAKE VIEW products_with_sales RENAME TO products_with_sales_v2;
Huomautus
Komentoa ALTER MATERIALIZED LAKE VIEW tuetaan vain uudelleennimeämiseen. Määritelmän tai muiden ominaisuuksien (kuten SELECT kyselyn, rajoitteiden tai osiointien) muokkaamiseksi katso Päivitä materialisoitu järvinäkymä.
Poista materialisoitu järvinäkymä
Voit poistaa materialisoidun järvinäkymän käyttämällä Delete-vaihtoehtoa Lakehouse-objektin tutkijasta tai ajamalla komentoa.DROP Syntaksi on seuraava:
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
Esimerkiksi poistamaan products_with_sales:
DROP MATERIALIZED LAKE VIEW products_with_sales;
Huomautus
Muodostettu järvinäkymän pudottaminen tai uudelleennimeäminen vaikuttaa historiatietonäkymään ja ajoitettuun päivitykseen. Muista päivittää viittaus kaikissa riippuvaisissa materialisoiduissa järvinäkymissä.
Nykyiset rajoitukset
Seuraavat rajoitukset koskevat Spark SQL -lauseita materialisoiduille järvinäkymille:
-
Skeeman nimet — Pelkästään isot skeeman nimet (esim.
MYSCHEMA) eivät ole tuettuja. Käytä sekakirjaimia tai pieniä kirjaimia. -
Ei datan käsittelykielen (DML) lauseita — Et voi ajaa
INSERT,UPDATE, taiDELETElauseita materialisoitua järvinäkymää vastaan. Data täytetään vain määritelmässä olevallaSELECTkyselyllä. -
Ei aikamatkustuskyselyjä — Materialisoidun järven näkymän määritelmässä
SELECToleva kysely ei voi käyttää Delta Lake -aikamatkustussyntaksia (esimerkiksi,VERSION AS OFtaiTIMESTAMP AS OF). -
Ei käyttäjän määrittelemiä funktioita — Käyttäjän määrittelemiä funktioita (UDF) ei tueta kyselyssä
SELECT, joka määrittelee materialisoidun järvinäkymän. -
Ei väliaikaisia näkymiä lähteinä — Kysely
SELECTvoi viitata taulukoihin ja muihin materialisoituihin järvinäkymiin, mutta ei väliaikaisiin näkymiin. -
Istuntotason Spark-ominaisuudet — Spark-konfiguraatio-ominaisuudet, jotka on asetettu istuntotasolla (esimerkiksi
spark.conf.set(...)), ei sovelleta aikataulutetun päivityksen aikana. Aseta ominaisuudet järvenrakennuksen tai työtilan tasolle sen sijaan. -
Tiedostojen vastaanotto — Tiedostojen vastaanottonäkymät tukevat vain CSV:tä ja Parquetia.
FIXED-skeemanäkymä epäonnistuu, jos lähdekansiossa on tiedostoja, joilla on eri skeemat luomishetkellä. Lähdepolut eivät voi sisältää välilyöntejä. OneLake-kansion pikakuvakkeet ovat tuettuja lähteinä, mutta hallittu päivitys ei rekursiivisesti löydä tiedostoja, jotka on lisätty sisäkkäisten pikakuvakekansioiden alle.