table_changes tabellvärdesfunktion

Gäller för:check markerad ja Databricks SQL-kontroll markerad som ja Databricks Runtime

Returnerar en logg över ändringar i en Delta Lake-tabell med Ändringsdataflöde aktiverat.

Om du vill anropa den här funktionen måste du ha minst en av följande:

  • SELECT behörighet för den angivna tabellen
  • Vara ägare till tabellen
  • Ha administratörsbehörighet

Syntax

table_changes ( table_str, start [, end ] )

Argument

  • table_str: En STRING-literal som representerar tabellens valfritt kvalificerade namn.
  • start: En BIGINT- eller TIMESTAMP-literal som representerar den första versionen eller tidsstämpeln för ändringen som ska returneras.
  • end: En valfri BIGINT- eller TIMESTAMP-literal som representerar den senaste versionen eller tidsstämpeln för ändringen som ska returneras. Om inte anges returneras alla ändringar från start upp till den aktuella ändringen.

Returnerar

En tabell med alla kolumner i tabellen som identifieras i table_strplus följande kolumner:

  • _change_type STRING NOT NULL

    Anger ändringen: delete, insert, update_preimageeller update_postimage

  • _commit_version BIGINT NOT NULL

    Anger incheckningsversionen av tabellen som är associerad med ändringen.

  • _commit_timestamp TIMESTAMP NOT NULL

    Anger tidsstämpeln för incheckning som är associerad med ändringen.

Om table_str inte representerar ett kvalificerat tabellnamn kvalificeras namnet med värdet current_schema. Om tabellnamnet innehåller blanksteg eller punkter använder du citattecken i strängen för att citera den delen av namnet.

Exempel

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