Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime
Returnerar en logg med ändringar i en Delta Lake-tabell med Ändringsdataflöde aktiverat.
Om du vill anropa den här funktionen måste du ha minst något av följande:
-
SELECTbehörighet för den angivna tabellen - Bli ägare av 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 ändring som ska returneras.Funktionen ger ett fel om
startär:- En version tidigare än den tidigaste tillgängliga versionen av tabellen.
- En version senare än den senaste versionen av tabellen.
- En tidsstämpel som är senare än den senaste commit-tidsstämpeln.
end: En valfri BIGINT- eller TIMESTAMP-literal som representerar den senaste versionen eller tidsstämpeln för ändring som ska returneras. Om det inte specificeras returneras alla ändringar frånstartfram till den aktuella ändringen.Funktionen ger ett fel om
endär:- En version senare än den senaste versionen av tabellen, eller en tidsstämpel som är senare än den senaste commit-tidsstämpeln.
- En version tidigare än den tidigaste tillgängliga versionen av tabellen, eller en tidsstämpel tidigare än den tidigast tillgängliga commit-tidsstämpeln.
För att återställa alla ändringar från
startupp till den senaste versionen, utelämnaend.
Returer
En tabell med alla kolumner i tabellen som identifieras i table_strplus följande kolumner:
_change_type STRING NOT NULLAnger ändringen:
delete,insert,update_preimageellerupdate_postimage_commit_version BIGINT NOT NULLAnger commit-versionen av tabellen som är associerad med ändringen.
_commit_timestamp TIMESTAMP NOT NULLVisar tidsstämpeln för commit som är associerad med ändringen.
Om table_str inte representerar ett kvalificerat tabellnamn är namnet kvalificerat 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