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