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