Kipinän SQL-viite materialisoituja järvinäkymiä varten

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

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, tai DELETE lauseita materialisoitua järvinäkymää vastaan. Data täytetään vain määritelmässä olevalla SELECT kyselyllä.
  • Ei aikamatkustuskyselyjä — Materialisoidun järven näkymän määritelmässä SELECT oleva kysely ei voi käyttää Delta Lake -aikamatkustussyntaksia (esimerkiksi, VERSION AS OF tai TIMESTAMP 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 SELECT voi 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.