Optimaalinen virkistystilaisuus järvimökin toteutuneisiin järvinäkymiin

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:

  1. Mene järvimajaasi ja valitse Materialisoidut järvinäkymät.

  2. Valitse Hallinnoi, ja valitse sitten Optimaalinen virkistyskytkin käynnistääksesi sen.

    Kuvakaappaus, jossa näkyy optimaalinen virkistystila käyttöön.

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ä.

Kuvakaappaus, jossa näkyy Tallenne, päivitys- ja kustannusbanneri Materialisoitujen järvien katselusivulla, jossa on Activate CDF -painike.

CDF:n ottamiseksi käyttöön suoraan bannerista:

  1. Bannerissa valitse Aktivoi CDF.

  2. Enable Change Data Feed -valintaikkunassa tarkastele materialisoitujen järvinäkymien listaa ja lähdetauluja, joissa CDF on käytössä.

    Kuvakaappaus Enable Change Data Feed -valintaikkunasta, jossa luetellaan materialisoidut järvinäkymät ja lähdetaulut, joissa CDF on käytössä.

  3. 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.

  1. Mene järvimajaasi ja valitse Materialisoidut järvinäkymät.

  2. Klikkaa Hallinta ja poista Optimal refresh -kytkin käytöstä.

    Kuvakaappaus, jossa näkyy kytkin vaihtaaksesi täyteen virkistystilaan.