Sledování řádků v Azure Databricks

V Databricks Runtime 14.1 a novějších verzích přiřazuje sledování řádků každému řádku stabilní identifikátory řádků a verze potvrzení pro jednotlivé řádky, což umožňuje sledování datové linie na úrovni řádků. Některé přírůstkové aktualizace materializovaných zobrazení vyžadují tuto funkci.

Všechny tabulky Apache Iceberg v3 zahrnují sledování řádků. Viz Použití funkcí Apache Iceberg v3. U tabulek Delta Lake je nutné explicitně povolit sledování řádků.

Note

Povolením sledování řádků se upgraduje protokol zápisu tabulek a může to mít vliv na kompatibilitu s externími klienty Delta Lake. Viz kompatibilita a protokoly funkcí Delta Lake.

Povolení sledování řádků v tabulkách Delta Lake

Pokud chcete povolit sledování řádků v tabulce Delta Lake, nastavte vlastnost delta.enableRowTracking = true tabulky během vytváření tabulky:

CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;

Pokud chcete povolit sledování řádků u existující tabulky Delta Lake, použijte následující příklad:

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);

Important

Povolení sledování řádků u existujících tabulek automaticky přiřadí ID řádků a verze potvrzení řádků všem existujícím řádkům v tabulce. Tento proces může vést k vytvoření několika nových verzí tabulky a dokončení této tabulky může trvat poměrně dlouho.

Varování

Pokud je tabulka cílem průběžných zápisů, jako jsou úlohy strukturovaného streamování, pozastavte operace zápisu před povolením sledování řádků a obnovením po dokončení operace. Povolení sledování řádků pomocí ALTER TABLE aktualizuje metadata tabulky, což způsobí, že všechny souběžné operace zápisu budou po dobu provádění této operace selhávat s chybou MetadataChangedException. Viz Výjimky konfliktů.

Klonování tabulky vytvoří samostatnou historii, takže ID řádků a verze potvrzení řádků v naklonovaných tabulkách neodpovídají těm v původní tabulce.

Pole metadat

Sledování řádků přidá do tabulky dvě skrytá pole metadat. Tato pole můžete explicitně přidat do dotazu, aby se vrátily hodnoty.

Název sloupce Typ Hodnoty Explanation
_metadata.row_id Long Jedinečný identifikátor řádku. Řádek uchovává stejné ID při každé změně pomocí MERGE příkazu nebo UPDATE příkazu.
_metadata.row_commit_version Long Verze protokolu Delta nebo tabulky, do které byl řádek naposledy vložen nebo aktualizován. Řádku je přiřazena nová verze při každé změně pomocí příkazu MERGE nebo UPDATE.

Některé operace ukládají tato pole metadat pomocí transakčního protokolu. Spuštění OPTIMIZE nebo REORG operace v tabulce s povoleným sledováním řádků přepíše datové soubory pro uložení těchto polí.

Vypněte sledování řádků na tabulkách Delta Lake

Pokud chcete v tabulce Delta Lake vypnout sledování řádků, nastavte vlastnost tabulky na false.

ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);

Important

Zakázání sledování řádků neodebere odpovídající funkci tabulky a nevede k degradaci verze protokolu tabulky. Neodebere také pole metadat z cílové tabulky. Chcete-li plně odebrat funkci tabulky a downgradovat protokol, použijte DROP FEATURE. Viz Smazat tabulku Delta Lake a snížit protokol tabulky.

Po vypnutí sledování řádků už ID vygenerovaných řádků nejsou pro sledování jedinečných řádků spolehlivé.

Limitations

Při čtení datového kanálu změn není možné získat přístup k polím metadat id řádků a verzí potvrzení řádků. Viz Použití informačního kanálu změn dat v Azure Databricks.