Bagikan melalui


table_changes fungsi bernilai tabel

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Mengembalikan log perubahan pada tabel Delta Lake dengan Umpan Data Perubahan diaktifkan.

Untuk memanggil fungsi ini, Anda harus memiliki setidaknya salah satu hal berikut:

  • SELECT izin khusus pada tabel yang ditentukan
  • Jadilah pemilik tabel data
  • Memiliki hak administratif

Sintaks

table_changes ( table_str, start [, end ] )

Argumen

  • table_str: STRING harfiah yang mewakili nama tabel yang memenuhi syarat secara opsional.
  • start: BIGINT atau TIMESTAMP literal, mewakili versi pertama atau tanda waktu perubahan yang akan dikembalikan.
  • end: BIGINT opsional atau TIMESTAMP literal, mewakili versi terakhir atau tanda waktu perubahan yang akan dikembalikan. Jika tidak ditentukan semua perubahan dari start hingga perubahan saat ini dikembalikan.

Mengembalikan

Tabel tersebut mencakup semua kolom yang diidentifikasi dalam table_str, ditambah kolom-kolom tambahan berikut:

  • _change_type STRING NOT NULL

    Menentukan perubahan: delete, insert, update_preimage, atau update_postimage

  • _commit_version BIGINT NOT NULL

    Menentukan versi komit dari tabel yang terkait dengan perubahan.

  • _commit_timestamp TIMESTAMP NOT NULL

    Menentukan tanda waktu penerapan yang terkait dengan perubahan.

Jika table_str tidak mewakili nama tabel yang memenuhi syarat, nama tersebut memenuhi syarat dengan nilai current_schema. Jika nama tabel berisi spasi atau titik, gunakan tanda kutip kembali dalam string untuk mengutip bagian nama tersebut.

Contoh

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