Sdílet prostřednictvím


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 = truetabulky .

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 falsehodnotu .

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.