Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Důležitý
Tato funkce je ve verzi Public Preview. Vyžaduje Databricks Runtime 17.3 nebo novější.
Requirements
Chcete-li použít FLOW AUTO CDC, je nutné nastavit pipelines.channel vlastnost tabulky na 'PREVIEW' streamovací tabulku:
TBLPROPERTIES (pipelines.channel = 'PREVIEW')
Tato vlastnost označuje kanál tabulky do kanálu preview, aby FLOW AUTO CDC byla klauzule rozpoznána. Bez něj CREATE OR REFRESH STREAMING TABLE ... FLOW AUTO CDC příkazy selžou se syntaxí nebo chybou nepodporované funkce. Úplný seznam vlastností tabulky kanálu najdete v části Vlastnosti tabulky kanálu .
FLOW AUTO CDC Pomocí klauzule CREATE STREAMING TABLE můžete zpracovávat záznamy CDC (Change Data Capture) ze zdroje do tabulky streamování.
Dříve se MERGE INTO tento příkaz běžně používal ke zpracování záznamů CDC v Azure Databricks. Může však MERGE INTO vést k nesprávným výsledkům z důvodu záznamů mimo posloupnosti nebo vyžaduje složitou logiku pro opakované řazení záznamů.
AUTO CDC zjednodušuje CDC tím, že automaticky zpracovává záznamy mimo objednávku. Zadáte klíče k identifikaci záznamů, sekvenčního sloupce pro řazení a zda se mají ukládat výsledky jako scD typu 1 (přímé aktualizace) nebo SCD typu 2 (sledování historie).
Syntaxe
CREATE OR REFRESH STREAMING TABLE table_name
FLOW AUTO CDC
FROM source
KEYS (keys)
[IGNORE NULL UPDATES]
[APPLY AS DELETE WHEN condition]
[APPLY AS TRUNCATE WHEN condition]
SEQUENCE BY orderByColumn
[SYSTEM SEQUENCE BY systemOrderByColumn]
[COLUMNS {columnList | * EXCEPT (exceptColumnList)}]
[STORED AS {SCD TYPE 1 | SCD TYPE 2 | BITEMPORAL}]
[TRACK HISTORY ON {columnList | * EXCEPT (exceptColumnList)}]
Výchozí chování INSERT a UPDATE události slouží k přenesení událostí CDC ze zdroje: aktualizujte všechny řádky v cílové tabulce, které odpovídají zadaným klíčům, nebo vložte nový řádek, pokud v cílové tabulce neexistuje odpovídající záznam. Zpracování událostí DELETE lze zadat pomocí APPLY AS DELETE WHEN podmínky.
Parametry
sourceZdroj dat. Zdrojem musí být zdroj streamování. Pomocí klíčového
STREAMslova můžete ke čtení ze zdroje použít sémantiku streamování. Pokud čtení narazí na změnu nebo odstranění existujícího záznamu, vyvolá se chyba. Je nejbezpečnější číst ze statických nebo doplňovacích zdrojů.Další informace o streamovaných datech najdete v tématu Transformace dat pomocí kanálů.
KEYSSloupec nebo kombinace sloupců, které jednoznačně identifikují řádek ve zdrojových datech. Hodnoty v těchto sloupcích slouží k identifikaci událostí CDC, které se vztahují na konkrétní záznamy v cílové tabulce.
Pokud chcete definovat kombinaci sloupců, použijte čárkami oddělený seznam sloupců.
Tato klauzule je povinná.
IGNORE NULL UPDATESUmožňuje ingestování aktualizací obsahujících podmnožinu cílových sloupců. Když událost CDC odpovídá existujícímu řádku a
IGNORE NULL UPDATESje zadána, sloupce snullhodnotou si zachovají své stávající hodnoty v cíli. To platí i pro vnořené sloupce snullhodnotou.Tato klauzule je nepovinná.
Výchozí hodnotou je přepsání existujících sloupců
nullhodnotami.APPLY AS DELETE WHENUrčuje, kdy se má událost CDC považovat za událost
DELETE, nikoli jako upsert.Pro zdroje typu SCD typu 2 je odstraněný řádek dočasně zachován jako náhrobek v podkladové tabulce Delta a v metastoru se vytvoří zobrazení, které filtruje tyto náhrobky. Interval uchovávání informací lze nakonfigurovat s
pipelines.cdc.tombstoneGCThresholdInSecondsvlastností tabulky.Tato klauzule je nepovinná.
APPLY AS TRUNCATE WHENUrčuje, kdy má být událost CDC považována za úplnou tabulku
TRUNCATE. Vzhledem k tomu, že tato klauzule aktivuje úplné zkrácení cílové tabulky, měla by být použita pouze pro konkrétní případy použití vyžadující tuto funkci.Klauzule
APPLY AS TRUNCATE WHENje podporována pouze pro SCD typu 1. ScD typu 2 nepodporuje operaci zkrácení.Tato klauzule je nepovinná.
SEQUENCE BYNázev sloupce určující logické pořadí událostí CDC ve zdrojových datech. Zpracování potrubí používá toto sekvencování ke zpracování událostí změn, které přicházejí ve špatném pořadí.
Pokud je pro sekvencování potřeba více sloupců, použijte
STRUCTvýraz: seřadí se podle prvního pole struktury, pak podle druhého pole v případě shody, a tak dále.Zadané sloupce musí být řaditelné datové typy.
Tato klauzule je povinná.
SYSTEM SEQUENCE BYDůležitý
Bitemporal AUTO CDC je v beta verzi.
Název sloupce určující systémový čas, ve kterém je každá událost CDC známa systému.
STORED AS BITEMPORALPoužívá se ke sledování změn v pracovním čase (SEQUENCE BY) i systémovém čase. Podívejte se, jak bitemporal AUTO CDC funguje.Zadané sloupce musí být řaditelné datové typy.
Tato klauzule je nepovinná a vztahuje se pouze na bitemporální tabulky.
COLUMNSUrčuje podmnožinu sloupců, které se mají zahrnout do cílové tabulky. Máte tyto možnosti:
- Zadejte úplný seznam sloupců, které se mají zahrnout:
COLUMNS (userId, name, city). - Zadejte seznam sloupců, které chcete vyloučit:
COLUMNS * EXCEPT (operation, sequenceNum)
Tato klauzule je nepovinná.
Výchozí hodnota je zahrnout všechny sloupce v cílové tabulce, pokud
COLUMNSnení klauzule zadána.- Zadejte úplný seznam sloupců, které se mají zahrnout:
STORED ASZda se mají ukládat záznamy jako SCD typu 1, SCD typu 2 nebo bitemporal.
Nastavte si sledování
BITEMPORALzměn v obchodním i systémovém čase. Bitemporal vyžadujeSYSTEM SEQUENCE BYa je v beta verzi. Podívejte se, jak bitemporal AUTO CDC funguje.Tato klauzule je nepovinná.
Výchozí hodnota je SCD typu 1.
TRACK HISTORY ONUrčuje podmnožinu výstupních sloupců pro generování záznamů historie, pokud dojde k nějakým změnám těchto zadaných sloupců. Máte tyto možnosti:
- Zadejte úplný seznam sloupců, které chcete sledovat:
COLUMNS (userId, name, city). - Zadejte seznam sloupců, které se mají vyloučit ze sledování:
COLUMNS * EXCEPT (operation, sequenceNum)
Tato klauzule je nepovinná. Výchozí hodnota je sledovat historii všech výstupních sloupců, pokud dojde ke změnám, které jsou ekvivalentní
TRACK HISTORY ON *.- Zadejte úplný seznam sloupců, které chcete sledovat:
Příklady
-- SCD type 1: apply CDC changes with direct updates (no history)
> CREATE OR REFRESH STREAMING TABLE target
TBLPROPERTIES(pipelines.channel = "PREVIEW")
FLOW AUTO CDC
FROM stream(cdc_data.users)
KEYS (userId)
SEQUENCE BY sequenceNum
STORED AS SCD TYPE 1;
-- SCD type 2: retain a history of changes, with delete handling
> CREATE OR REFRESH STREAMING TABLE target
TBLPROPERTIES(pipelines.channel = "PREVIEW")
FLOW AUTO CDC
FROM stream(cdc_data.users)
KEYS (userId)
APPLY AS DELETE WHEN operation = "DELETE"
SEQUENCE BY sequenceNum
COLUMNS * EXCEPT (operation, sequenceNum)
STORED AS SCD TYPE 2;
-- SCD type 2 with history tracking on specific columns
> CREATE OR REFRESH STREAMING TABLE target
TBLPROPERTIES(pipelines.channel = "PREVIEW")
FLOW AUTO CDC
FROM stream(cdc_data.users)
KEYS (userId)
APPLY AS DELETE WHEN operation = "DELETE"
SEQUENCE BY sequenceNum
COLUMNS * EXCEPT (operation, sequenceNum)
STORED AS SCD TYPE 2
TRACK HISTORY ON * EXCEPT (city);