tablo değerli işlevi table_changes

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Değişiklik Veri Akışı'nın etkinleştirildiği Delta Lake tablosundaki değişikliklerin günlüğünü döndürür.

Bu işlevi çağırmak için aşağıdakilerden en az birine sahip olmanız gerekir:

  • Belirtilen tabloda SELECT yetkisi
  • Masada söz sahibi olun
  • Yönetici ayrıcalıklarına sahip

Söz dizimi

table_changes ( table_str, start [, end ] )

Argümanlar

  • table_str: Tablonun isteğe bağlı olarak nitelenmiş adını temsil eden STRING sabit değer.

  • start: Döndürülecek değişikliğin ilk sürümünü veya zaman damgasını temsil eden BIGINT veya TIMESTAMP değişmez değeri.

    Fonksiyon hata döndürür eğer start şöyledir:

    • Tablonun en eski mevcut versiyonundan daha eski bir versiyon.
    • Tablonun en son sürümünden daha sonraki bir versiyon.
    • En son commit zaman damgasından daha geç bir zaman damgası.
  • end: Döndürülecek isteğe bağlı bir BIGINT veya TIMESTAMP değişmez değeri, değişikliğin son sürümünü veya zaman damgasını temsil eder. Belirtilmediyse, mevcut değişime start kadar olan tüm değişiklikler geri gönderilir.

    Fonksiyon hata döndürür eğer end şöyledir:

    • Tablonun en son sürümünden daha geç bir sürüm veya en son commit zaman damgasından daha geç bir zaman damgası.
    • Tablonun en eski mevcut sürümünden daha eski bir versiyon veya en erken mevcut commit zaman damgasından daha erken bir zaman damgası.

    En son sürüme kadar olan tüm değişiklikleri start geri vermek için end.

İadeler

table_striçinde tanımlanan tablonun tüm sütunlarının yanı sıra aşağıdaki sütunları içeren bir tablo:

  • _change_type STRING NOT NULL

    Değişikliği belirtir: delete, insert, update_preimageveya update_postimage

  • _commit_version BIGINT NOT NULL

    Değişiklikle ilişkili tablonun işleme sürümünü belirtir.

  • _commit_timestamp TIMESTAMP NOT NULL

    Değişiklikle ilişkili işleme zaman damgasını belirtir.

table_str nitelenmiş bir tablo adını temsil etmiyorsa, ad current_schemadeğeriyle nitelenmiş olur. Tablo adı boşluk veya nokta içeriyorsa, adın bu kısmını tırnak içine almak için dizenin içindeki tırnak işaretlerini kullanın.

Örnekler

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