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 pätee vain, kun molemmat seuraavat ovat totta:
- Lähdedata on vain lisätty päivityssyklin ajaksi. Jos päivityssykli havaitsee poistot tai päivitykset lähdetaulussa, moottori palaa täyteen virkistykseen — vaikka CDF olisi käytössä ja kysely käyttäisi vain tuettuja SQL-rakenteita. Lisätietoja löytyy kohdasta inkrementaalinen päivitys ja pelkkä liitetiedot.
-
Delta-muutosdatasyöte (CDF) on käytössä (
delta.enableChangeDataFeed=true) kaikissa lähdetaulukoissa, joihin viitataan materialisoidun järven näkymän määritelmässä. Ilman CDF:ää optimaalinen päivitys voi valita vain nollavirkistystä ja täysvirkistystä 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.
Inkrementaalinen päivitys ja pelkkä liitetiedot
Nykyään inkrementaalinen päivitys koskee vain, kun lähdedata on vain lisätty päivitysten väliin. Jos jokin lähdetaulu tallentaa poiston tai päivityksen, Fabric palaa täyteen virkistykseen – vaikka CDF olisi käytössä ja kysely käyttää vain tukemia SQL-rakenteita.
Moottorilla täytyy olla luotettava tapa tunnistaa poistetut rivit. Tehokkuuden parantamiseksi käyttäjät voivat nyt antaa päivitysvinkkejä. Pilotoimme tätä valittujen asiakkaiden kanssa.
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ä.
Vinkki
Auttaakseen sinua tunnistamaan päivitysoptimointimahdollisuuksia, Fabric tuo esiin bannerin, joka listaa materialisoidut järvinäkymät, jotka ovat kelpoisia inkrementaaliseen päivitykseen, mutta estetty, koska CDF ei ole käytössä yhdessä tai useammassa lähdetaulussa. Banneri näkyy lineage-näkymässä, viimeisimmissä juoksuissa ja yksittäisen solmun tasolla, joten voit havaita aukon käyttämästäsi sisäänkäynnistä.
CDF:n ottamiseksi käyttöön suoraan bannerista:
Bannerissa valitse Aktivoi CDF.
Enable Change Data Feed -valintaikkunassa tarkastele materialisoitujen järvinäkymien listaa ja lähdetauluja, joissa CDF on käytössä.
Valitse Ota käyttöön. Seuraava päivitys heijastaa päivitettyä CDF-tilaa.
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-deterministisiä funktioita kuten rand(), uuid(), ja current_timestamp() ei tueta.
DISTINCT ja ikkunatoimintoja ei tueta. |
| 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. |
| RYHMÄ MUKAAN / aggregaatit | Tukivat.
Aggregaattien (AVG(), STDDEV(), ja muiden) käyttö edellyttää, että jokainen lähdetaulu on osioitu ja että osion sarake sisältyy GROUP BY MLV-kyselyn lauseeseen – tämä vaatimus mahdollistaa Fabric:n laskea asteittain uudelleen vain ne osiot. SUM(), MIN(), MAX(), ja COUNT() (ilman DISTINCTia) ovat erityistapaus: ne tukevat inkrementaalista päivitystä ilman osiointivaatimusta. Muiden aggregaattifunktioiden sekoittaminen , SUM()COUNT(), MIN(), ja MAX() samassa kyselyssä (esimerkiksi SELECT SUM(amount), AVG(price) ...), vaatii koko kyselyn osiointiehdon; muuten Fabric palaa täyteen virkistykseen.
GROUP BY sarakkeet on oltava listassa SELECT . |
| 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ä.