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.
Kromě základních rozhraní API AUTO CDC a AUTO CDC FROM SNAPSHOT můžete provádět operace DML nad cílovými tabulkami, číst kanály změn dat z cílů CDC a sledovat metriky zpracování. Úvod k rozhraním AUTO CDC API najdete v AUTO CDC rozhraní API: Zjednodušení zachytávání změn dat pomocí kanálů.
Přidání, změna nebo odstranění dat v cílové streamovací tabulce
Pokud kanál publikuje tabulky do katalogu Unity, můžete použít příkazy jazyka DML ( Data Manipulat Language ), včetně příkazů vložení, aktualizace, odstranění a sloučení, a upravit cílové tabulky streamování vytvořené příkazy AUTO CDC ... INTO .
Poznámka:
- Příkazy DML, které upravují schéma tabulky streamované tabulky, nejsou podporovány. Ujistěte se, že se příkazy DML nepokoušnou vyvíjet schéma tabulky.
- Příkazy DML, které aktualizují streamovací tabulku, lze spustit pouze ve sdíleném clusteru Unity Catalog nebo v SQL warehouse s použitím Databricks Runtime 13.3 LTS a vyšší.
- Vzhledem k tomu, že streamování vyžaduje pouze připojované zdroje dat, vyžaduje-li vaše zpracování streamování ze zdrojové streamovací tabulky, která obsahuje změny (například prostřednictvím příkazů DML), nastavte příznak skipChangeCommits při čtení zdrojové streamovací tabulky. Při nastavení
skipChangeCommitsbudou transakce, které odstraňují nebo upravují záznamy ve zdrojové tabulce, ignorovány. Pokud vaše zpracování nevyžaduje streamovací tabulku, můžete jako cílovou tabulku použít materializované zobrazení (které nemá omezení pouze pro přidání).
Protože kanál používá zadaný SEQUENCE BY sloupec a šíří odpovídající hodnoty sekvencování do __START_AT a __END_AT sloupců cílové tabulky (pro SCD Type 2), je nutné zajistit, aby příkazy DML používaly platné hodnoty pro tyto sloupce, aby se zachovalo správné pořadí záznamů. Podívejte se, jak AUTO CDC funguje.
Další informace o použití příkazů DML se streamovanými tabulkami najdete v tématu Přidání, změna nebo odstranění dat v streamované tabulce.
Následující příklad vloží aktivní záznam s počáteční sekvencí 5:
INSERT INTO my_streaming_table (id, name, __START_AT, __END_AT) VALUES (123, 'John Doe', 5, NULL);
Návod
Pokud potřebujete přejmenovat __START_AT sloupce __END_AT v cílové tabulce SCD Type 2 (například aby odpovídaly požadavkům podřízeného schématu), vytvořte zobrazení nad cílovou tabulkou:
CREATE VIEW my_employees_view AS
SELECT
*,
__START_AT AS valid_from,
__END_AT AS valid_to
FROM my_scd2_target_table;
Přečíst datový vstup změn z cílové tabulky AUTO CDC
Ve službě Databricks Runtime 15.2 a novějších můžete číst datový proud změn z tabulky streamování, na kterou jsou směrovány dotazy AUTO CDC nebo AUTO CDC FROM SNAPSHOT, stejným způsobem jako čtete datový proud změn z jiných tabulek Delta. Pro čtení datového kanálu změn z cílové tabulky streamování jsou potřeba následující:
- Cílová streamovací tabulka musí být publikovaná v katalogu Unity. Podívejte se na Použití katalogu Unity s kanály.
- Pokud chcete číst datový kanál změn z cílové streamovací tabulky, musíte použít Databricks Runtime 15.2 nebo vyšší. Pokud chcete číst datový kanál změn v jiném potrubí, musí být potrubí nakonfigurované tak, aby používalo Databricks Runtime 15.2 nebo vyšší.
Zdroj dat o změnách čtete z cílové streamovací tabulky vytvořené v pipeline Lakeflow stejným způsobem jako zdroj dat o změnách z jiných tabulek Delta. Další informace o používání funkce Delta change data feed, včetně příkladů v jazycích Python a SQL, najdete v tématu Použití change data feed ve službě Azure Databricks.
Poznámka:
Záznam datového kanálu změn obsahuje metadata identifikující typ události změny. Když se záznam aktualizuje v tabulce, metadata přidružených záznamů změn obvykle obsahují _change_type hodnoty nastavené na update_preimage a update_postimage události.
Tyto hodnoty se ale liší, pokud jsou provedeny aktualizace cílové tabulky streamování, které zahrnují změnu hodnot primárního klíče _change_type. Pokud změny zahrnují aktualizace primárních klíčů, pole metadat _change_type jsou nastavena na insert a delete události. Změny primárních klíčů mohou nastat, když se provádí ruční aktualizace jednoho z klíčových polí prostřednictvím příkazu UPDATE nebo MERGE. U tabulek typu SCD 2 mohou nastat změny, když se pole __start_at změní, aby odráželo dřívější hodnotu počáteční sekvence.
Dotaz AUTO CDC určuje hodnoty primárního klíče, které se liší pro zpracování typu SCD 1 a SCD typu 2:
| Typ SCD | Primární klíč |
|---|---|
| SCD typ 1, a rozhraní Python pipelines | Primární klíč je hodnota keys parametru create_auto_cdc_flow() ve funkci. Pro rozhraní SQL je primární klíč sloupce definované KEYS klauzulí v AUTO CDC ... INTO příkazu. |
| SCD – typ 2 | Primárním klíčem je keys parametr nebo KEYS klauzule plus návratová hodnota z coalesce(__START_AT, __END_AT) operace, kde __START_AT a __END_AT jsou odpovídajícími sloupci z cílové tabulky streamování.
__START_AT Používá se, pokud je k dispozici a __END_AT kdy __START_AT je null (například počáteční záznam). |
Získání dat o záznamech zpracovaných CDC dotazem v pipelinech
Poznámka:
Následující metriky jsou zachyceny pouze AUTO CDC dotazy, nikoli AUTO CDC FROM SNAPSHOT dotazy.
Následující metriky jsou získávány pomocí dotazů AUTO CDC.
-
num_upserted_rows: Počet výstupních řádků přenesených do datové sady během aktualizace. -
num_deleted_rows: Počet existujících výstupních řádků odstraněných z datové sady během aktualizace.
Metrika num_output_rows, výstup pro toky bez CDC, se pro dotazy nezachytává AUTO CDC.
Jaké datové objekty se používají ke zpracování CDC v datovém toku?
Když deklarujete cílovou tabulku v metastoru Hive, vytvoří se dvě datové struktury:
- Zobrazení s názvem přiřazeným k cílové tabulce.
- Interní zálohovací tabulka používaná kanálem ke správě zpracování CDC. Tato tabulka je pojmenovaná tak, že se předsadí
__apply_changes_storage_na název cílové tabulky.
Pokud například deklarujete cílovou tabulku s názvem dp_cdc_target, zobrazí se zobrazení s názvem dp_cdc_target a tabulka pojmenovaná __apply_changes_storage_dp_cdc_target v metastoru. Zadejte dotaz na zobrazení pro přístup ke zpracovaným datům. Neupravujte záložní tabulku přímo.
Poznámka:
Tyto datové struktury se vztahují pouze na AUTO CDC zpracování, nikoli AUTO CDC FROM SNAPSHOT zpracování. Platí také pouze pro metastor Hive, nikoli pro katalog Unity.