table_changes
funkcja wartości tabeli
Dotyczy: Databricks SQL Databricks Runtime
Zwraca dziennik zmian w tabeli usługi Delta Lake z włączonym zestawieniem danych zmian.
Aby wywołać tę funkcję, musisz mieć co najmniej jedną z następujących funkcji:
SELECT
uprawnienia w określonej tabeli- Być właścicielem tabeli
- Uprawnienia administracyjne
Składnia
table_changes ( table_str, start [, end ] )
Argumenty
table_str
: literał CIĄGU reprezentujący opcjonalną kwalifikowaną nazwę tabeli.start
: literał BIGINT lub TIMESTAMP reprezentujący pierwszą wersję lub znacznik czasu zmiany do zwrócenia.end
: opcjonalny literał BIGINT lub TIMESTAMP reprezentujący ostatnią wersję lub znacznik czasu zmiany do zwrócenia. Jeśli nie określono wszystkich zmian zstart
góry do bieżącej zmiany zostaną zwrócone.
Zwraca
Tabela zawierająca wszystkie kolumny tabeli zidentyfikowane w table_str
tabeli oraz następujące kolumny:
_change_type STRING NOT NULL
Określa zmianę:
delete
, ,insert
update_preimage
lubupdate_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