Jaa


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 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:

  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.

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.

  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.