Optimal oppdatering for materialisert innsjøutsikt i et innsjøhus

Hver gang en planlagt oppdatering kjøres for dine materialiserte innsjøutsikter, bestemmer Fabric den beste strategien å bruke—ingen oppdatering, inkrementell eller full—basert på hva som har endret seg i kildedataene. Denne oppførselen kalles optimal oppdatering, og den hjelper deg å holde dine materialiserte innsjøvisninger oppdatert samtidig som du minimerer beregningskostnader og oppdateringstid.

Denne artikkelen forklarer hvordan optimal oppdatering fungerer, hva hver strategi gjør, og hvordan du kan bytte til full oppdateringsmodus ved behov.

Merk deg

Optimal oppdatering støttes ikke i følgende scenarioer:

  • PySpark-definisjoner: Optimal oppdatering gjelder kun for MLV-er definert med Spark SQL. PySpark-definerte MLV-er bruker alltid full oppdatering.
  • Ikke-Delta-kildetabeller: Materialiserte innsjøvisninger som bruker ikke-Delta-tabeller som kilde, utfører alltid en full oppdatering. Inkrementelle og ikke-oppdateringsstrategier krever Delta-tabellkilder.

Fordeler med optimal oppdatering

Ved å analysere delta-commits på kildetabeller kan optimal oppdatering ta smarte beslutninger om hvordan dataene dine skal behandles. Der det er mulig, kan dette resultere i:

  • Lavere kostnad: Mindre datakraft og lagring brukes når Fabric oppdager at kildedata ikke har endret seg og hopper over oppdateringen helt. Det påløper ingen ekstra gebyrer for optimal oppdatering – du faktureres basert på databehandlingsbruk under oppdateringsoperasjoner.
  • Forbedret effektivitet: Raskere oppdateringssykluser når kun endret data må behandles, noe som hjelper deg å levere ferskere innsikt.
  • Tidsbesparelser: Redusert oppdateringstid når inkrementell behandling brukes i stedet for å beregne hele datasettet på nytt.

Optimale oppdateringsstrategier

Følgende tabell beskriver oppdateringsstrategiene som optimal oppdatering kan velge:

Oppdater policy Beskrivelse
Ingen oppdatering Hvis ingen nye delta-commits oppdages i kildetabellene, hopper Fabric over oppdateringen helt, og unngår unødvendig beregning.
Trinnvis oppdatering Behandler kun de endrede dataene når nye delta-commits oppdages på kildetabellene.
Full oppdatering Beregner hele den materialiserte innsjøutsikten på nytt fra hele kildedatasettet. Denne strategien brukes når ikke-støttede uttrykk oppdages, når endringer ikke kan behandles inkrementelt, eller når kildedatasetet er lite nok til at en full omberegning går raskere enn inkrementell behandling.

Viktig!

Inkrementell oppdatering gjelder kun når begge følgende er sanne:

  • Kildedata legges kun til for oppdateringssyklusen. Hvis en oppdateringssyklus oppdager slettinger eller oppdateringer på en kildetabell, faller motoren tilbake til full oppdatering — selv når CDF er aktivert og spørringen kun bruker støttede SQL-konstruksjoner. For mer informasjon, se Inkrementell oppfriskning og kun append-data.
  • Delta endringsdatafeed (CDF) er aktivert (delta.enableChangeDataFeed=true) på alle kildetabeller som refereres til i den materialiserte innsjøvisningsdefinisjonen. Uten CDF kan optimal oppdatering bare velge mellom ingen oppdatering og full oppdatering. For mer informasjon, se Aktiver inkrementell oppdatering.

Sett opp optimal oppdatering

Den optimale oppdateringsbryteren gir deg strategier uten oppdatering og full oppdatering uten ekstra oppsett. For å låse opp en inkrementell oppdateringsstrategi må du også aktivere endringsdatafeed i kildetabellene dine.

Slå på optimal oppdateringsmodus

Som standard er optimal oppdateringsmodus aktivert for en materialisert lake view-linje. Hvis den ikke er aktivert, følg disse stegene for å slå den på:

  1. Gå til hytta ved innsjøen din og velg Materialiserte innsjøutsikter.

  2. Velg Administrer, og velg deretter Optimal oppdateringsbryter for å slå den på.

    Skjermbilde som viser veksle for å aktivere optimal oppdateringsmodus.

Inkrementell oppdatering og kun append-data

I dag gjelder inkrementell oppdatering kun når kildedata kun legges til mellom oppdateringene. Hvis en kildetabell registrerer en sletting eller oppdatering, faller Fabric tilbake til full oppdatering – selv med CDF aktivert og en spørring som kun bruker støttede SQL-konstruksjoner.

Motoren trenger en pålitelig måte å identifisere slettede rader på. For å øke effektiviteten kan brukere nå tilby oppdateringstips. Vi piloterer dette med utvalgte kunder.

Aktiver inkrementell oppdatering

For å bruke inkrementell oppdatering må du aktivere delta change data feed (CDF)-egenskapen på alle kildetabeller eller materialiserte innsjøvisninger som refereres til i den materialiserte innsjøvisningsdefinisjonen. CDF lar Fabric bare lese radene som har endret seg siden siste oppdatering, i stedet for å behandle hele datasettet på nytt.

Uten CDF aktivert kan optimal oppdatering bare velge mellom ingen oppdatering og full oppdatering.

Tips

For å hjelpe deg med å identifisere muligheter for oppfriskningsoptimalisering, viser Fabric frem et banner som lister materialiserte innsjøvisninger som er kvalifisert for inkrementell oppfriskning, men blokkert fordi CDF ikke er aktivert på én eller flere kildetabeller. Banneret vises i linjevisningen, på detaljene for nylige kjøringer , og på det individuelle nodenivået , slik at du kan se gapet fra det inngangspunktet du bruker.

Skjermbilde som viser banneret Save refresh and cost på siden for materialiserte innsjøvisninger med knappen Aktiver CDF.

For å aktivere CDF direkte fra banneret:

  1. I banneret, velg Aktiver CDF.

  2. I dialogen Aktiver endringsdatafeed , se gjennom listen over materialiserte innsjøvisninger og kildetabellene hvor CDF vil være aktivert.

    Skjermbilde av dialogen Aktiver endring datafeed som viser materialiserte innsjøvisninger og kildetabellene hvor CDF vil være aktivert.

  3. Velg Aktiver. Neste oppdatering gjenspeiler den oppdaterte CDF-statusen.

Merk deg

Å aktivere CDF på kildetabellene dine har ingen målbar lagrings- eller ytelseseffekt for kun append-arbeidsbelastninger, som er scenariet som inkrementell oppdatering støtter. CDF er en standard Delta Lake-bordegenskap som andre Fabric-funksjoner også kan dra nytte av. For mer informasjon om hvordan CDF fungerer, se Use Delta Lake endringsdatafeed.

Du kan aktivere CDF ved opprettelsestidspunktet ved å inkludere TBLPROPERTIES i uttalelsen CREATE :

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

For eksisterende kildetabeller, bruk ALTER TABLE for å aktivere CDF:

ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

For eksempel, for å aktivere CDF på begge kildetabellene fra startguiden:

ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);

SQL-konstruksjoner støttet av inkrementell oppdatering

Inkrementell oppdatering fungerer når din materialiserte lake view-definisjon kun bruker SQL-konstruksjonene beskrevet her. Hvis spørringen din inneholder ustøttede konstruksjoner – som vindusfunksjoner eller ikke-deterministiske funksjoner – oppdaterer Fabric fortsatt dataene dine, men faller tilbake til full oppdatering.

SQL-konstruksjon Kommentar
SELECT-uttrykk Deterministiske innebygde funksjoner og uttrykk støttes. Ikke-deterministiske funksjoner som rand(), uuid(), og current_timestamp() støttes ikke. DISTINCT Og vindusfunksjoner støttes ikke.
FROM Støtter delta-tabeller og materialiserte innsjøutsikter. Underforespørsler og CTE-er fungerer hvis de kun bruker de støttede klausulene.
WHERE Kun deterministiske innebygde funksjoner støttes.
INDRE SAMMENFØYNING Støttes.
VENSTRE YTRE SAMLING / VENSTRE SEMI-SAMLING Støttes. Inkrementell oppdatering fungerer bare hvis tabellen på høyre side forblir uendret under oppdateringssyklusen. Enhver endring i tabellen på høyre side utløser en full oppdatering.
GRUPPE ETTER / aggregater Støttes. Bruk av aggregater (AVG(), STDDEV(), og andre) krever at hver kildetabell er partisjonert og at partisjonskolonnen er inkludert i klausulen GROUP BY i MLV-spørringen – dette kravet lar Fabric kun inkrementelt beregne de berørte partisjonene på nytt.
SUM(), MIN(), MAX(), og COUNT() (uten DISTINKT) er et spesialtilfelle: de støtter inkrementell oppfriskning uten krav om partisjonering.
Å blande andre aggregatfunksjoner med SUM(), COUNT(), , MIN()og MAX() i samme spørring (for eksempel SELECT SUM(amount), AVG(price) ...) krever partisjoneringsbetingelsen for hele spørringen; ellers faller Fabric tilbake til full oppdatering. GROUP BY kolonner må vises i SELECT listen.
UNION ALLE Støttes.
WITH Felles tabelluttrykk (CTE) hvis de kun bruker støttede klausuler.
Delforespørsler i uttrykk Delforespørsler i SELECT- eller WHERE-uttrykk (som skalar-underspørringer eller EXISTS) utløser en full oppfriskning hvis noen referert tabell har endringer.
Begrensninger for datakvalitet Kun deterministiske innebygde funksjoner støttes i begrensninger.

Merk deg

Å bruke ustøttede konstruksjoner hindrer deg ikke i å lage en materialisert innsjøutsikt. Det betyr bare at Fabric bruker en full oppdatering i stedet for en inkrementell oppdatering.

Full oppdatering

Optimal oppdatering faller automatisk tilbake til full oppdatering når det trengs, så du trenger vanligvis ikke å tvinge det. Det finnes imidlertid tilfeller hvor du kan ønske å utløse en full oppdatering manuelt—for eksempel for å feilsøke uventede resultater eller for å behandle data på nytt etter en korreksjon.

Kjør en engangs full oppfriskning med SQL

For å tvinge en full oppdatering av en spesifikk materialisert innsjøvisning, kjør følgende kommando:

REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL

Merk deg

Hvis navnet på arbeidsområdet ditt inneholder mellomrom, innkapsl det i backticks: `My Workspace`.lakehouse.schema.view_name

Slå av optimal oppdatering

Hvis du vil at hver planlagte kjøring skal utføre en full oppdatering, kan du slå av den optimale oppdateringsbryteren. Dette deaktiverer både ikke-oppdaterings- og inkrementelle strategier – hver kjøring beregner hele datasettet på nytt, selv om ingen kildedata er endret.

  1. Gå til hytta ved innsjøen din og velg Materialiserte innsjøutsikter.

  2. Klikk på Administrer og slå av Optimal oppdateringsbryteren .

    Skjermbilde som viser veksle for å bytte til full oppdateringsmodus.