Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Gibt ein Protokoll von Änderungen an eine Delta Lake-Tabelle mit aktiviertem Datenänderungsfeed zurück.
Um diese Funktion aufzurufen, müssen Sie mindestens eine der folgenden Voraussetzungen erfüllen:
-
SELECT-Berechtigung für die angegebene Tabelle besitzen - Besitzer der Tabelle sein
- Administratorberechtigungen besitzen
Syntax
table_changes ( table_str, start [, end ] )
Argumente
table_str: Ein STRING-Literal, das den optional qualifizierten Namen der Tabelle darstellt.start: Ein BIGINT- oder TIMESTAMP-Literal, das die erste Version oder den ersten Zeitstempel der Änderung darstellt, die zurückgegeben wird.Die Funktion gibt einen Fehler zurück, wenn
startgilt:- Eine Version vor der frühesten verfügbaren Version der Tabelle.
- Eine Version später als die neueste Version der Tabelle.
- Ein Zeitstempel, der später als der letzte Commit-Zeitstempel ist.
end: Ein optionales BIGINT- oder TIMESTAMP-Literal, das die letzte Version oder den letzten Zeitstempel der Änderung darstellt, die zurückgegeben wird. Wenn nicht angegeben, werden alle Änderungen vonstartbis zur aktuellen Änderung zurückgegeben.Die Funktion gibt einen Fehler zurück, wenn
endgilt:- Eine Version später als die neueste Version der Tabelle oder ein Zeitstempel, der später als der letzte Commit-Zeitstempel liegt.
- Eine Version vor der frühesten verfügbaren Version der Tabelle oder ein Zeitstempel, der früher als der früheste verfügbare Commit-Zeitstempel ist.
Um alle Änderungen von
startbis zur neuesten Version zurückzugeben, lassenendSie . weg .
Gibt zurück
Eine Tabelle einschließlich aller Spalten der in table_str identifizierten Tabelle, plus die folgenden Spalten:
_change_type STRING NOT NULLGibt die Änderung an:
delete,insert,update_preimageoderupdate_postimage_commit_version BIGINT NOT NULLGibt die Commit-Version der Tabelle an, die der Änderung zugeordnet ist.
_commit_timestamp TIMESTAMP NOT NULLGibt den Commit-Zeitstempel an, der der Änderung zugeordnet ist.
Wenn table_str keinen qualifizierten Tabellenname darstellt, ist der Name mit dem Wert current_schema qualifiziert.
Wenn der Tabellenname Leerzeichen oder Punkte enthält, verwenden Sie invertierte Hochkommata, um diesen Teil des Namens zu zitieren.
Beispiele
-- 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