Udostępnij za pośrednictwem


table_changes funkcja wartości tabeli

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Zwraca dziennik zmian w tabeli Delta Lake z włączonym kanałem danych o zmianach.

Aby wywołać tę funkcję, musisz mieć co najmniej jedną z następujących funkcji:

  • SELECT przywilej dla określonej tabeli
  • Zostań właścicielem stołu
  • Uprawnienia administracyjne

Składnia

table_changes ( table_str, start [, end ] )

Argumenty

  • table_str: literał ciągu znaków reprezentujący opcjonalnie kwalifikowaną nazwę tabeli.
  • start: Literał typu BIGINT lub TIMESTAMP, reprezentujący wersję początkową lub znacznik czasu zmiany, która ma zostać zwrócona.
  • end: opcjonalny literał BIGINT lub TIMESTAMP, który reprezentuje ostatnią wersję lub znacznik czasu zmiany, które mają zostać zwrócone. Jeśli nie określono, wszystkie zmiany od start do bieżącej zmiany zostaną zwrócone.

Zwraca

Tabela zawierająca wszystkie kolumny tabeli zidentyfikowane w table_str, a także następujące kolumny:

  • _change_type STRING NOT NULL

    Określa zmianę: delete, , insertupdate_preimagelubupdate_postimage

  • _commit_version BIGINT NOT NULL

    Określa wersję zatwierdzenia tabeli skojarzonej ze zmianą.

  • _commit_timestamp TIMESTAMP NOT NULL

    Określa znacznik czasu zatwierdzenia skojarzony ze zmianą.

Jeśli table_str nie reprezentuje kwalifikowanej nazwy tabeli, nazwa jest kwalifikowana z wartością current_schema. Jeśli nazwa tabeli zawiera spacje lub kropki, użyj cudzysłowów wstecznych w ciągu, aby zacytować tę część nazwy.

Przykłady

-- Create a Delta table with Change Data Feed;
> CREATE TABLE myschema.t(c1 INT, c2 STRING) TBLPROPERTIES(delta.enableChangeDataFeed=true);

-- Modify the table
> INSERT INTO myschema.t VALUES (1, 'Hello'), (2, 'World');
> INSERT INTO myschema.t VALUES (3, '!');
> UPDATE myschema.t SET c2 = upper(c2) WHERE c1 < 3;
> DELETE FROM myschema.t WHERE c1 = 3;

-- Show the history of table change events
> DESCRIBE HISTORY myschema.t;
 version timestamp                    userId           userName      operation    operationParameters                                            ...
       4 2022-09-01T18:32:35.000+0000 6167625779053302 alf@melmak.et DELETE       {"predicate":"[\"(spark_catalog.myschema.t.c1 = 3)\"]"}
       3 2022-09-01T18:32:32.000+0000 6167625779053302 alf@melmak.et UPDATE       {"predicate":"(c1#3195878 < 3)"}
       2 2022-09-01T18:32:28.000+0000 6167625779053302 alf@melmak.et WRITE        {"mode":"Append","partitionBy":"[]"}
       1 2022-09-01T18:32:26.000+0000 6167625779053302 alf@melmak.et WRITE        {"mode":"Append","partitionBy":"[]"}
       0 2022-09-01T18:32:23.000+0000 6167625779053302 alf@melmak.et CREATE TABLE {"isManaged":"true","description":null,"partitionBy":"[]","properties":"{\"delta.enableChangeDataFeed\":\"true\"}"}

-- Show the change table feed using a the commit timestamp retrieved from the history.
> SELECT * FROM table_changes('`myschema`.`t`', 2);
 c1 c2     _change_type    _commit_version _commit_timestamp
  3 !      insert                        2 2022-09-01T18:32:28.000+0000
  2 WORLD  update_postimage              3 2022-09-01T18:32:32.000+0000
  2 World  update_preimage               3 2022-09-01T18:32:32.000+0000
  1 Hello  update_preimage               3 2022-09-01T18:32:32.000+0000
  1 HELLO  update_postimage              3 2022-09-01T18:32:32.000+0000
  3 !      delete                        4 2022-09-01T18:32:35.000+0000

-- Show the ame change table feed using a point in time.
> SELECT * FROM table_changes('`myschema`.`t`', '2022-09-01T18:32:27.000+0000') ORDER BY _commit_version;
 c1 c2     _change_type    _commit_version _commit_timestamp
  3 !      insert                        2 2022-09-01T18:32:28.000+0000
  2 WORLD  update_postimage              3 2022-09-01T18:32:32.000+0000
  2 World  update_preimage               3 2022-09-01T18:32:32.000+0000
  1 Hello  update_preimage               3 2022-09-01T18:32:32.000+0000
  1 HELLO  update_postimage              3 2022-09-01T18:32:32.000+0000
  3 !      delete                        4 2022-09-01T18:32:35.000+0000