Kdy použít REPLACE WHERE vs. materializované pohledy

Jak REPLACE WHERE flows, tak samostatné materializované pohledy umožňují udržovat odvozené tabulky, které zůstávají aktuální při změnách zdrojových dat, ale řeší jiné problémy. Pro většinu dávkových úloh ETL, které periodicky přepisují časové okno nebo oddíl, použijte inkrementální tok REPLACE WHERE. Použijte materializované pohledy pro vrstvu pro akceleraci dotazů, která poskytuje předpočítané výsledky pro dashboardy a reporty.

Tato stránka pokrývá samostatné streamovací tabulky a materializované zobrazení. Toky REPLACE WHERE v pipeline Lakeflow najdete v části Dávkové zpracování s toky REPLACE WHERE.

Pro dávkové přepsání použijte REPLACE WHERE

REPLACE WHERE flow přepočítává a přepisuje pouze řádky, které odpovídají predikátu, například časovému oknu nebo oddílu. Všechny ostatní řádky zůstávají nedotčené. Protože tok znovu vyhodnocuje zdrojový dotaz pouze pro tento rozsah predikátů, náklady na každou obnovu závisí na velikosti rozsahu, nikoli na velikosti tabulky.

Materializovaný pohled zachovává plný výsledek svého definujícího dotazu. Azure Databricks obnovuje materializovaný pohled inkrementálně, když to podporují dotaz a zdrojová data, a jinak provádí plnou obnovu. Zda je obnova inkrementální, závisí na struktuře dotazu a zdrojových tabulkách, takže náklady na každou obnovu je obtížnější předpovědět. Viz Jak se aktualizují samostatná materializovaná zobrazení?

Pro dávkový ETL datový model, který se mění v omezených rozsahech, vám tok REPLACE WHERE umožňuje přesně ovládat, které řádky se při každém obnovení přepisují. Materializovaný pohled je vhodnější, když čtenáři potřebují rychlý přístup k předem vypočítanému výsledku.

Namapujte konstrukty do medailonových vrstev

Následující tabulka mapuje každou vrstvu medailonové architektury na konstrukci, kterou Databricks doporučuje:

Vrstva Vytvořit Proč
Bronz (surový příjem) Příjem pomocí Lakeflow Connect nebo Auto Loader Ukládá surové záznamy postupně, jak přicházejí, bez přepracování historie.
Stříbro (fakta) Inkrementální REPLACE flow WHERE Přepisuje pouze postižená časová okna nebo partitiony pro aktualizace faktů, pozdně dorazená data a opravy.
Stříbro (rozměry) AUTO CDC flow Automaticky aplikuje sémantiku vkládání, aktualizace a mazání a uchovává historii s pomalu se měnící dimenzí (SCD) typu 1 nebo 2.
Zlato (agregace a datové modely) Postupný průběh REPLACE WHERE Přepočítává pouze rozsah predikátů pro agregáty a modely, čímž se vyhýbá úplným přepočítáním tabulek.
Zrychlení dotazů a jejich obsluhy materializované zobrazení Předem vypočtené výsledky poskytuje dashboardům a reportům a udržuje aktuální výsledky dotazů.

Průvodce rozhodováním

Použijte následujícího průvodce k výběru mezi těmito dvěma konstrukty.

Použijte tok REPLACE WHERE, když:

  • Provádějte periodické dávkové přepisy časového okna nebo partition.
  • Opravit opožděně doručená data.
  • Použijte odstranění z důvodu dodržování předpisů na omezený rozsah.
  • Obnovit data na úrovni diskového oddílu.

Použijte materializovaný pohled, když:

  • Zrychlete dotazy na dashboardu.
  • Nabízet čtenářům předpočítané agregace.
  • Udržujte aktuální výsledky dotazů pro obslužnou vrstvu.

Příklad: inkrementální přepsání s REPLACE WHERE

Následující příklad definuje cílovou tabulku, která při každé obnově přepisuje pouze posledních 7 dní dat. Při obnově flow smaže řádky odpovídající predikátu, znovu vypočítá zdrojový dotaz pro tento rozsah a vloží výsledky. Řady mimo okno zůstávají nedotčené:

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 je potřeba, aby sloupce odpovídaly podle názvu, nikoli podle pozice. Pro kompletní syntaxi, přepsání predikátů, zpětné doplňování a inkrementální obnovovací chování viz REPLACE WHERE flowy pro samostatné streamovací tabulky.

Další prostředky