Použití sledování řádků pro tabulky Delta
Sledování řádků Delta Lake umožňuje Službě Azure Databricks sledovat rodokmen na úrovni řádků v tabulce Delta. Tato funkce se vyžaduje pro některé přírůstkové aktualizace materializovaných zobrazení.
Důležité
Sledování řádků Delta Lake je k dispozici ve službě Databricks Runtime 14.1 a vyšší.
Sledování řádků je funkce tabulky a používá protokol zápisu vyšší tabulky než někteří klienti Delta Lake. Verze protokolu tabulky nelze downgradovat a tabulky s povoleným sledováním řádků nelze zapisovat klienty Delta Lake, kteří nepodporují všechny povolené funkce tabulek protokolu Delta Writer. Viz Jak Azure Databricks spravuje kompatibilitu funkcí Delta Lake?.
Povolení sledování řádků
Sledování řádků je nutné explicitně povolit nastavením vlastnosti delta.enableRowTracking = true
tabulky .
Můžete to udělat při vytváření tabulky, jak je znázorněno v následujícím příkladu:
CREATE TABLE table_name
TBLPROPERTIES (delta.enableRowTracking = true)
AS SELECT * FROM source_table;
Existující tabulku můžete změnit tak, aby umožňovala sledování řádků, jak je znázorněno v následujícím příkladu:
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = true);
Důležité
Povolení sledování řádků u existujících tabulek automaticky přiřadí ID řádků a 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 může trvat značné množství času.
Klonování tabulky Delta vytvoří samostatnou historii, takže ID řádků a verze potvrzení řádků v naklonovaných tabulkách neodpovídají těm v původní tabulce.
Jaké je schéma polí metadat sledování řádků?
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 | Vysvětlení |
---|---|---|---|
_metadata.row_id |
Dlouhé celé číslo | 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 |
Dlouhé celé číslo | Verze protokolu Delta nebo tabulky, do které byl řádek naposledy vložen nebo aktualizován. | Řádek je přiřazena nová verze při každé změně pomocí MERGE příkazu nebo příkazu 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í.
Zakázání sledování řádků
Sledování řádků můžete zakázat nastavením vlastnosti tabulky na false
hodnotu .
ALTER TABLE table_name SET TBLPROPERTIES (delta.enableRowTracking = false);
Důležité
Zakázání sledování řádků neodebere odpovídající funkci tabulky a neodegraduje verzi protokolu tabulky. Neodebere také pole metadat z cílové tabulky.
Když je sledování řádků zakázané, ID řádků generovaná už nejsou pro sledování jedinečných řádků spolehlivá.
Omezení
Id řádků a pole metadat potvrzení řádků nelze získat přístup při čtení datového kanálu změn. Viz Použití datového kanálu změn Delta Lake v Azure Databricks.