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.
Joka kerta kun suunniteltu päivitys suoritetaan materialisoiduille järvinäkymille, Fabric määrittää parhaan strategian – ei päivitystä, inkrementaalista tai täyttä – perustuen siihen, mitä lähdedatassa on muuttunut. Tätä käyttäytymistä kutsutaan optimaaliseksi päivitykseksi, ja se auttaa pitämään materiaalisoidut järvinäkymät ajan tasalla samalla kun laskentakustannukset ja päivitysaika minimoidaan.
Tässä artikkelissa selitetään, miten optimaalinen päivitys toimii, mitä kukin strategia tekee ja miten vaihtaa täyteen päivitystilaan tarvittaessa.
Huomautus
Optimaalista päivitystä ei tueta seuraavissa tilanteissa:
- PySpark-määritelmät: Optimaalinen päivitys koskee vain MLV:itä, jotka on määritelty Spark SQL:llä. PySparkin määrittelemät MLV:t käyttävät aina täyspäivitystä.
- Ei-Delta-lähdetaulut: Materialisoidut järvinäkymät, jotka käyttävät ei-Delta-tauluja lähteenä, suorittavat aina täyden päivityksen. Inkrementaalit ja päivitysvapaat strategiat vaativat Delta-taulukon lähteitä.
Optimaalisen virkistyksen edut
Analysoimalla delta-committeja lähdetauluissa, optimaalinen päivitys voi tehdä fiksuja päätöksiä datan käsittelystä. Mahdollisuuksien mukaan tämä voi johtaa:
- Alhaisemmat kustannukset: Vähemmän laskentatehoa ja tallennustilaa käytetään, kun Fabric havaitsee, ettei lähdedata ole muuttunut, ja jättää päivityksen kokonaan väliin. Optimaalisesta päivityksestä ei peri ylimääräisiä maksuja – laskutus perustuu laskentatoimeen päivitysoperaatioiden aikana.
- Parantunut tehokkuus: Nopeammat päivityssyklit silloin, kun käsiteltävänä on vain muutettua dataa, mikä auttaa sinua tarjoamaan tuoreempia oivalluksia.
- Ajansäästö: Lyhyempi päivitysaika, kun käytetään inkrementaalista käsittelyä sen sijaan, että koko aineisto laskettaisiin uudelleen.
Optimaaliset päivitysstrategiat
Seuraava taulukko kuvaa optimaalisen päivityksen valitsemat päivitysstrategiat:
| Päivitä käytäntö | Kuvaus |
|---|---|
| Ei päivitystä | Jos lähdetauluissa ei havaita uusia delta-committeja, Fabric ohittaa päivityksen kokonaan, välttäen turhaa laskentaa. |
| Lisäävä päivitys | Käsittelee vain muuttunutta dataa, kun uudet delta-commitit havaitaan lähdetaulukoissa. |
| Täysi päivitys | Laskee uudelleen koko materiaalistetun järven näkymän koko lähdeaineistosta. Tätä strategiaa käytetään, kun tuettomia lausekkeita havaitaan, kun muutoksia ei voida käsitellä asteittain tai kun lähdeaineisto on niin pieni, että täysi uudelleenlaskenta on nopeampaa kuin inkrementaalinen käsittely. |
Tärkeää
Inkrementaalinen päivitys vaatii delta-muutostiedon syötteen (CDF) ominaisuuden (delta.enableChangeDataFeed=true) kaikissa lähdetaulukoissa, joihin viitataan materialisoidun järvinäkymän määritelmässä. Ilman CDF:ää optimaalinen päivitys voi valita vain nollavirkistystä tai täyden virkistysasetuksen välillä. Lisätietoja löytyy kohdasta Enable incremental refresh.
Aseta optimaalinen päivitys
Optimaalinen päivityskytkin antaa sinulle sekä ei-päivitys- että täyden päivityksen strategiat ilman ylimääräisiä asetuksia. Inkrementaalisen päivitysstrategian avaamiseksi sinun täytyy myös ottaa käyttöön muutostietosyöte lähdetauluissa.
Laita optimaalinen virkistystila päälle
Oletuksena optimaalinen päivitystila on käytössä materialisoidulle järvinäkymän linjalle. Jos se ei ole käytössä, seuraa näitä ohjeita käynnistääksesi sen:
Mene järvimajaasi ja valitse Materialisoidut järvinäkymät.
Valitse Hallinnoi, ja valitse sitten Optimaalinen virkistyskytkin käynnistääksesi sen.
Ota käyttöön inkrementaalinen päivitys
Inkrementaalisen päivityksen käyttämiseksi sinun täytyy ottaa delta change data feed (CDF) -ominaisuus käyttöön kaikissa lähdetauluissa tai materialisoiduissa järvinäkymisissä, joihin viitataan materialisoidun järvinäkymän määritelmässä. CDF antaa Fabricille mahdollisuuden lukea vain ne rivit, jotka ovat muuttuneet viimeisen päivityksen jälkeen, sen sijaan että koko aineisto käsiteltäisiin uudelleen.
Ilman CDF:ää optimaalinen päivitys voi valita vain nollavirkistystä tai täyden virkistysasetuksen välillä.
Lisäävää päivitystä tuetaan vain liittämistiedoissa. Jos lähdedatassa on poistoja tai päivityksiä, Fabric suorittaa täyden päivityksen.
Huomautus
CDF:n salliminen lähdetauluissa ei tuota mitattavissa olevaa tallennus- tai suorituskykyvaikutusta pelkästään liitetyille työkuormille, mikä on tilanne, jota inkrementaalinen päivitys tukee. CDF on standardi Delta Lake Table -ominaisuus, josta myös muut Fabric-ominaisuudet voivat hyötyä. Lisätietoja CDF:n toiminnasta löytyy osoitteesta Käytä Delta Lake -muutostietolähdettä.
Voit ottaa CDF:n TBLPROPERTIES käyttöön luomishetkellä sisällyttämällä CREATE lauseeseen:
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
Olemassa oleville lähdetauluille käytä ALTER TABLE CDF:n käyttöönottoa:
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Esimerkiksi CDF:n käyttöönotto molemmissa lähdetaulukoissa aloitusoppaasta:
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
SQL-rakenteet, joita tukee inkrementaalinen päivitys
Inkrementaalinen päivitys toimii, kun materialisoitu järvinäkymän määrittely käyttää vain tässä kuvattuja SQL-rakenteita. Jos kyselyssäsi on tuettuja rakenteita – kuten ikkunafunktioita tai ei-deterministisiä funktioita – Fabric päivittää datasi, mutta palaa täyteen päivitykseen.
| SQL-rakenne | Huomautus |
|---|---|
| SELECT-lauseke | Deterministiset sisäänrakennetut funktiot ja lausekkeet ovat tuettuja. Ei tue inkrementaalista päivitystä: aggregaatiofunktiot (SUM(), COUNT(), MIN()AVG()MAX()STDDEV(), jne.), GROUP BY, DISTINCT, ikkunafunktiot ja ei-deterministiset funktiot kuten rand(), uuid(), . current_timestamp() |
| FROM | Tukee Delta-taulukoita ja materialisoituja järvinäkymiä. Alikyselyt ja CTE:t toimivat, jos ne käyttävät vain tuettuja lausekkeita. |
| WHERE | Vain deterministiset sisäänrakennetut funktiot ovat tuettuja. |
| SISÄLIITOS | Tukivat. |
| VASEN ULKOLIITOS / VASEN PUOLILIITOS | Tukivat. Inkrementaalinen päivitys toimii vain, jos oikeanpuoleinen taulukko pysyy muuttumattomana päivitysjakson aikana. Kaikki muutokset oikeanpuoleiseen taulukkoon käynnistävät täyden päivityksen. |
| UNIONI KAIKKI | Tukivat. |
| WITH | Yleiset taulukkolausekkeet (CTE:t), jos ne käyttävät vain tuettuja lausekkeita. |
| Alikyselyt lausekkeissa | SELECT- tai WHERE-lausekkeiden alikyselyt (kuten skalaariset alikyselyt tai EXISTS) käynnistävät täyden päivityksen, jos viitattu taulukko on muuttunut. |
| Tietojen laaturajoitukset | Rajoitteissa tuetaan vain deterministiset sisäänrakennetut funktiot. |
Huomautus
Tukemattomien rakenteiden käyttö ei estä sinua luomasta materialisoitua järvinäkymää. Se tarkoittaa vain, että Fabric käyttää täyttä päivitystä asteittaisen päivityksen sijaan.
Täysi päivitys
Optimaalinen päivitys palautuu automaattisesti täyteen virkistykseen tarvittaessa, joten sitä ei yleensä tarvitse pakottaa. Kuitenkin on tapauksia, joissa saatat haluta käynnistää täyden päivityksen manuaalisesti – esimerkiksi odottamattomien tulosten vianetsinnän tai tietojen uudelleenkäsittelyn vuoksi korjauksen jälkeen.
Suorita kertaluonteinen täysi päivitys SQL:llä
Pakottaaksesi tietyn materialisoidun järvinäkymän täydelliseen päivitykseen, suorita seuraava komento:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
Huomautus
Jos työtilasi nimi sisältää välilyöntejä, sulje se takatikkeihin: `My Workspace`.lakehouse.schema.view_name
Sammuta optimaalinen päivitys
Jos haluat, että jokainen aikataulutettu kierros tekee täyden päivityksen, voit kytkeä optimaalisen virkistysasetuksen pois päältä. Tämä poistaa käytöstä sekä ei-päivitys- että inkrementaaliset strategiat – jokainen ajokerta laskee koko aineiston uudelleen, vaikka lähdedata ei muuttuisi.
Mene järvimajaasi ja valitse Materialisoidut järvinäkymät.
Klikkaa Hallinta ja poista Optimal refresh -kytkin käytöstä.