table_changes表值函數

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

返回一個更改日誌三角洲湖表啟用了改變數據提要。

調用這個函數需要至少有下列之一:

  • 選擇特權在指定的表

  • 表的所有者

  • 有管理權限

語法

table_changes(table_str,開始(,結束])

參數

  • table_str:一個字符串代表選擇合格的表的名稱。

  • 開始:一個長整型數字或時間戳文字,代表第一個版本或時間戳的改變返回。

  • 結束:一個可選的BIGINT或時間戳文字,代表的最後版本或時間戳改變返回。如果沒有指定的所有更改開始返回當前的變化。

返回

一個表包括表中標識的所有列table_str,再加上下麵的列:

  • _change_type字符串

    指定的改變:刪除,插入,update_preimage,或update_postimage

  • _commit_version長整型數字

    指定表的提交版本相關的改變。

  • _commit_timestamp時間戳

    指定與變更相關的提交時間戳。

如果table_str並不代表一個合格的表名的名字是限定的值current_schema。如果表名稱包含空格或點使用後引號字符串中引用的名稱。

例子

——創建一個增量表改變數據提要;myschema >創建表。t (INT c1, c2字符串)TBLPROPERTIES (delta.enableChangeDataFeed = true);——修改表>插入myschema。t值(1,“你好”),(2,'世界');>插入myschema。t值(3》!”);>更新myschema。t組c2 =上(c2), c1 < 3;從myschema >刪除。t c1 = 3;——顯示表更改事件的曆史>描述myschema.t曆史;版時間戳userId用戶名操作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