När ska man använda REPLACE WHERE jämfört med materialiserade vyer

Både REPLACE-flöden WHERE och fristående materialiserade vyer låter dig underhålla härledda tabeller som håller sig uppdaterade när källdata ändras, men de löser olika problem. För de flesta batch-extrahering, transformering och laddning (ETL) arbetsbelastningar som periodvis skriver över ett tidsfönster eller en partition, använd ett inkrementellt REPLACEWHERE-flöde. Använd materialiserade vyer för ett frågeaccelerationslager som levererar förberäknade resultat till dashboards och rapporter.

Denna sida täcker fristående strömningstabeller och materialiserade vyer. För REPLACE WHERE-flöden i en Lakeflow-pipeline, se Batchbearbetning med REPLACE WHERE-flöden.

Använd REPLACE WHERE för batch-överskrivningar

Ett REPLACE-flöde WHERE beräknar om och skriver över endast de rader som matchar ett predikat, såsom ett tidsfönster eller en partition. Alla andra rader förblir orörda. Eftersom flödet omvärderar källfrågan för just det predikatintervallet, beror kostnaden för varje uppdatering på intervallets storlek, inte på tabellens storlek.

En materialiserad vy lagrar hela resultatet av sin definierande fråga. Azure Databricks uppdaterar en materialiserad vy inkrementellt när fråge- och källdata stödjer den, och kör annars en fullständig uppdatering. Om en uppdatering är inkrementell beror på frågestrukturen och källtabellerna, så kostnaden för varje uppdatering är svårare att förutsäga. Se Hur uppdateras fristående materialiserade vyer?.

För en batch-ETL-datamodell som ändras inom begränsade intervall låter ett REPLACE-flöde WHERE dig kontrollera exakt vilka rader varje uppdatering skriver om. En materialiserad vy passar bättre när läsare behöver snabb tillgång till ett förberäknat resultat.

Mappa konstruktioner till medaljonnivåer

Följande tabell mappar varje lager i en medaljongarkitektur till den konstruktion som Databricks rekommenderar:

Skikt Konstruera Varför
Brons (rå inläsning) Inmatning med Lakeflow Connect eller Auto Loader Landar råposter stegvis när de anländer, utan att återbearbeta historiken.
Silver (fakta) Inkrementellt ERSÄTT flöde WHERE Skriver endast över de berörda tidsfönster eller partitioner för faktauppdateringar, sent inkommande data och korrigeringar.
Silver (dimensioner) AUTO CDC Flöde Tillämpar automatiskt semantik för infogning, uppdatering och borttagning och bevarar historik med långsamt föränderlig dimension (SCD) typ 1 eller typ 2.
Guld (aggregeringar och datamodeller) Inkrementellt ERSÄTTNINGSflöde WHERE Räknar om endast predikatintervallet för aggregat och modeller, och undviker fullständiga tabellomberäkningar.
Frågeacceleration och leverans materialiserad vy Levererar förberäknade resultat till instrumentpaneler och rapporter och håller frågeresultaten uppdaterade.

Beslutsguide

Använd följande guide för att välja mellan de två konstruktionerna.

Använd ett ERSÄTT-flöde WHERE när du:

  • Kör periodiska batchöverskrivningar av ett tidsfönster eller en partition.
  • Korrigera sent inkomna data.
  • Tillämpa raderingar för efterlevnad på ett begränsat intervall.
  • Uppdatera data på partitionsnivå.

Använd en materialiserad vy när du:

  • Snabba upp frågor i dashboarden.
  • Tillhandahåll förberäknade aggregeringar för läsare.
  • Håll frågeresultaten uppdaterade för ett serving layer.

Exempel: inkrementell överskrivning med REPLACE WHERE

Följande exempel definierar en måltabell som endast skriver över de senaste 7 dagarnas data vid varje uppdatering. Vid uppdatering raderar flödet raderna som matchar predikatet, beräknar om källqueryn för samma intervall och infogar resultaten. Raderna utanför fönstret lämnas orörda:

CREATE OR REFRESH STREAMING TABLE payments_latest
FLOW REPLACE WHERE payment_date >= date_add(current_date(), -7) BY NAME
SELECT payment_id, booking_id, status, payment_date
FROM samples.wanderbricks.payments;

BY NAME krävs så att kolumner matchar efter namn snarare än position. För fullständig syntax, predikatöverskrivningar, backfills och inkrementellt uppdateringsbeteende, se REPLACE WHERE flöden för fristående strömningstabeller.

Ytterligare resurser