Optimal opfriskning til materialiseret søudsigt i et søhus

Hver gang en planlagt opdatering kører for dine materialiserede søudsigter, bestemmer Fabric den bedste strategi at bruge – ingen opdatering, inkrementell eller fuld – baseret på, hvad der er ændret i kildedataene. Denne adfærd kaldes optimal opdatering, og den hjælper dig med at holde dine materialiserede søudsigter opdaterede, samtidig med at du minimerer beregningsomkostninger og opdateringstid.

Denne artikel forklarer, hvordan optimal opdatering fungerer, hvad hver strategi gør, og hvordan man skifter til fuld opdateringstilstand, når det er nødvendigt.

Notat

Optimal opdatering understøttes ikke i følgende scenarier:

  • PySpark-definitioner: Optimal opdatering gælder kun for MLV'er defineret med Spark SQL. PySpark-definerede MLV'er bruger altid fuld opdatering.
  • Ikke-Delta kildetabeller: Materialiserede søvisninger, der bruger ikke-Delta-tabeller som kilde, udfører altid en fuld opdatering. Inkrementelle og ikke-opdaterings-strategier kræver Delta-tabellkilder.

Fordele ved optimal opdatering

Ved at analysere delta-commits på kildetabeller kan optimal opdatering træffe kloge beslutninger om, hvordan dine data skal behandles. Hvor det er muligt, kan dette resultere i:

  • Lavere omkostninger: Der bruges mindre compute og lagerplads, når Fabric opdager, at kildedata ikke er ændret, og springer opdateringen helt over. Der pålægges ingen ekstra gebyrer for optimal opdatering – du bliver faktureret baseret på computerforbrug under opdateringsoperationer.
  • Forbedret effektivitet: Hurtigere opdateringscyklusser, når kun ændrede data skal behandles, hvilket hjælper dig med at levere friskere indsigter.
  • Tidsbesparelse: Reduceret opdateringsvarighed, når inkrementel behandling anvendes i stedet for at genberegne hele datasættet.

Optimale opdateringsstrategier

Følgende tabel beskriver de opdateringsstrategier, som optimal refresh kan vælge:

Opdater politik Beskrivelse
Ingen opdatering Hvis der ikke opdages nye delta-commits på kildetabellerne, springer Fabric opdateringen helt over og undgår unødig beregning.
Trinvis opdatering Behandler kun de ændrede data, når nye delta-commits opdages på kildetabellerne.
Fuld opdatering Genberegner hele den materialiserede søudsigt fra hele kildedatasættet. Denne strategi bruges, når ikke-understøttede udtryk opdages, når ændringer ikke kan behandles inkrementelt, eller når kildedatasættet er så lille, at en fuld genberegning er hurtigere end inkrementel behandling.

Vigtigt

Inkrementel opdatering gælder kun, når begge følgende er sande:

  • Kildedata kan kun tilføjes for opdateringscyklussen. Hvis en opdateringscyklus opdager sletninger eller opdateringer på en kildetabel, falder motoren tilbage til fuld opdatering — selv når CDF er aktiveret, og forespørgslen kun bruger understøttede SQL-konstruktioner. For flere detaljer, se Incremental refresh and append-only data.
  • Delta change data feed (CDF) er aktiveret (delta.enableChangeDataFeed=true) på alle kildetabeller, der refereres til i den materialiserede lake view-definition. Uden CDF kan optimal opdatering kun vælge mellem ingen opdatering og fuld opdatering. For mere information, se Aktivér inkrementel opdatering.

Opsæt optimal opdatering

Den optimale opdaterings-knap giver dig strategier uden opdatering og fuld opdatering uden ekstra opsætning. For at låse op for inkrementel opdateringsstrategi skal du også aktivere change data-feed på dine kildetabeller.

Tænd for optimal opdateringstilstand

Som standard er optimal opdateringstilstand aktiveret for en materialiseret søudsigtslinje. Hvis det ikke er aktiveret, følg disse trin for at tænde det:

  1. Gå til dit sommerhus og vælg Materialiserede søudsigter.

  2. Vælg Administrér, og vælg derefter Optimal opdateringsknappen for at tænde den.

    Skærmbillede, der viser skift for at aktivere optimal opdateringstilstand.

Inkrementel opdatering og kun append-data

I dag gælder inkrementel opdatering kun, når kildedata kun tilføjes mellem opdateringerne. Hvis en kildetabell registrerer en sletning eller opdatering, falder Fabric tilbage til fuld opdatering – selv med CDF aktiveret og en forespørgsel, der kun bruger understøttede SQL-konstruktioner.

Motoren har brug for en pålidelig måde at identificere slettede rækker på. For at forbedre effektiviteten kan brugerne nu give opdateringstips. Vi piloterer dette med udvalgte kunder.

Aktiver inkrementel opdatering

For at bruge inkrementel opdatering skal du aktivere delta change data feed (CDF)-egenskaben på alle kildetabeller eller materialiserede søvisninger, der refereres til i den materialiserede søvisningsdefinition. CDF lader Fabric kun læse de rækker, der er ændret siden sidste opdatering, i stedet for at genbehandle hele datasættet.

Uden CDF aktiveret kan optimal opdatering kun vælge mellem ingen opdatering og fuld opdatering.

Tip!

For at hjælpe dig med at identificere muligheder for opdateringsoptimering, viser Fabric et banner, der viser materialiserede søvisninger, der er berettigede til inkrementel opdatering, men blokeret, fordi CDF ikke er aktiveret på en eller flere kildetabeller. Banneret vises i lineage-visningen, på detaljer om seneste kørsler og på det enkelte nodeniveau , så du kan se hullet fra det indgangspunkt, du bruger.

Skærmbillede, der viser banneret Save refresh and cost på siden for materialiserede søvisninger med knappen Aktiver CDF.

For at aktivere CDF direkte fra banneret:

  1. I banneret skal du vælge Aktiver CDF.

  2. I dialogen Aktiver Change Data Feed gennemgår du listen over materialiserede søvisninger og kildetabellerne, hvor CDF vil være aktiveret.

    Skærmbillede af dialogen Aktiver Change Data Feed, der viser materialiserede søvisninger og kildetabellerne, hvor CDF vil være aktiveret.

  3. Vælg Aktivér. Den næste opdatering afspejler den opdaterede CDF-status.

Notat

Aktivering af CDF på dine kildetabeller har ingen målbar lager- eller ydelseseffekt for append-only arbejdsbelastninger, hvilket er det scenarie, som inkrementel opdatering understøtter. CDF er en standard Delta Lake-bordegenskab, som andre Fabric-funktioner også kan drage fordel af. For mere information om, hvordan CDF fungerer, se Use Delta Lake change datafeed.

Du kan aktivere CDF ved oprettelsen ved at inkludere TBLPROPERTIES i erklæringen 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 bruges ALTER TABLE til at aktivere CDF:

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

For eksempel for at aktivere CDF på begge kildetabeller fra startvejledningen:

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

SQL-konstruktioner understøttet af inkrementel opdatering

Inkrementel opdatering virker, når din materialiserede lake view-definition kun bruger de SQL-konstruktioner, der er beskrevet her. Hvis din forespørgsel indeholder uunderstøttede konstruktioner – såsom vinduesfunktioner eller ikke-deterministiske funktioner – opdaterer Fabric stadig dine data, men falder tilbage til en fuld opdatering.

SQL-konstruktion Bemærkning
SELECT-udtryk Deterministiske indbyggede funktioner og udtryk understøttes. Ikke-deterministiske funktioner som rand(), uuid(), og current_timestamp() understøttes ikke. DISTINCT Og vinduesfunktioner understøttes ikke.
FROM Understøtter delta-tabeller og materialiserede søudsigter. Subforespørgsler og CTE'er virker, hvis de kun bruger de understøttede klausuler.
WHERE Kun deterministiske indbyggede funktioner understøttes.
INDVENDIG SAMMENFØJNING Understøttes.
VENSTRE YDRE SAMLING / VENSTRE SEMI-SAMLING Understøttes. Inkrementel opdatering virker kun, hvis tabellen til højre forbliver uændret under opdateringscyklussen. Enhver ændring i tabellen til højre udløser en fuld opdatering.
GRUPPE EFTER / aggregater Støttet med betingelser. Brug af aggregater (AVG(), MIN(), MAX(), , STDDEV()osv.) kræver, at hver kildetabel er opdelt, og at partitionskolonnen er inkluderet i klausulen GROUP BY i MLV-forespørgslen—dette gør det muligt for Fabric kun at genberegne de berørte partitioner gradvist. SUM() og COUNT() (uden DISTINKT) er et specialtilfælde: de understøtter inkrementel opdatering uden krav om opdeling.
At blande andre aggregatfunktioner med SUM()/COUNT() i samme forespørgsel (for eksempel SELECT SUM(amount), AVG(price) ...) kræver partitioneringsbetingelsen for hele forespørgslen; ellers falder Fabric tilbage til fuld opdatering. GROUP BY Kolonner skal vises i SELECT listen.
UNION ALLE Understøttes.
WITH Common table expressions (CTE'er), hvis de kun bruger understøttede klausuler.
Underforespørgsler i udtryk Delforespørgsler inden for SELECT- eller WHERE-udtryk (såsom skalar-underforespørgsler eller EXISTS) udløser en fuld opdatering, hvis en refereret tabel har ændringer.
Begrænsninger for datakvalitet Kun deterministiske indbyggede funktioner understøttes i begrænsninger.

Notat

At bruge uunderstøttede konstruktioner forhindrer dig ikke i at skabe en materialiseret søudsigt. Det betyder kun, at Fabric bruger en fuld opdatering i stedet for en inkrementel opdatering.

Fuld opdatering

Optimal opdatering falder automatisk tilbage til fuld opdatering, når det er nødvendigt, så du behøver normalt ikke tvinge det. Der er dog tilfælde, hvor du måske vil udløse en fuld opdatering manuelt – for eksempel for at fejlfinde uventede resultater eller for at genbehandle data efter en rettelse.

Kør en engangs fuld opdatering med SQL

For at tvinge en fuld opdatering af et specifikt materialiseret sø-view, skal du køre følgende kommando:

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

Notat

Hvis dit arbejdsområdenavn indeholder mellemrum, indheg det i backticks: `My Workspace`.lakehouse.schema.view_name

Slå optimal opdatering fra

Hvis du vil have, at hver planlagt gennemførsel skal udføre en fuld opdatering, kan du slå den optimale opdaterings-knappe fra. Dette deaktiverer både strategierne uden opdatering og inkrementelle strategier – hver kørsel genberegner hele datasættet, selvom ingen kildedata er ændret.

  1. Gå til dit sommerhus og vælg Materialiserede søudsigter.

  2. Klik på Administrer og slå Optimal opdateringsknappen fra.

    Skærmbillede, der viser skift til fuld opdateringstilstand.