table_changes
表值函數
適用於:磚的SQL磚運行時
返回一個更改日誌三角洲湖表啟用了改變數據提要。
調用這個函數需要至少有下列之一:
選擇
特權在指定的表表的所有者
有管理權限
參數
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