Iceberg 表的时间旅行
与时间相关的数据是大多数应用程序数据库的核心。 通过从 V 11.2.3开始提供的 watsonx.data 时间旅行功能,您可以检索和分析历史数据,而不必开发其他应用程序逻辑 (例如,历史记录表)。 当您想要跟踪数据更改历史记录或重建数据时,此功能强大的工具非常有用。
通过使用 watsonx.data 时间旅行,您可以访问过去时间点的历史数据 (已更改的数据)。
使用 AS OF
查询特定时间的数据
SELECT product_id, product_name FROM product for SYSTEM_TIME AS OF "2023-10-23 10:00:00"
将实施以下约束:
- 对于 Iceberg 类型格式的 watsonx.data 表,将仅支持系统时间的 AS OF/BEFORE 子句。
- 至于 "
<timestamp value>
,只能是时间戳类型或可提升为时间戳值。 - 至于 "
<timestamp value>
,它可以是一个表达式,但最终需要求值为一个常量值。 - 截至 "
<timetamp value>
不能引用属性或子查询。 <timestamp value>
的时间不能早于与表中第一个可用快照 ID 相关的时间。
使用 BEFORE
查询特定时间的数据
SELECT product_id, product_name, product_price FROM product FOR SYSTEM_TIME BEFORE '2023-12-01 12:00:00'
BEFORE 子句期望时间戳记值,它返回给定时间戳记之前的数据方面的表状态。
使用 SYSTEM_VERSION
查询特定快照的数据
SELECT product_id, product_name, product_price FROM product FOR SYSTEM_VERSION AS OF 1887396386633333444
使用 SYSTEM_VERSION AS OF 子句,可以提供快照标识以根据给定快照标识来请求表的状态。 仅允许在 Iceberg 格式的 watsonx.data 表上使用 SYSTEM_VERSION 子句进行此时间旅行查询。
显示 "<table-name>
的快照
SHOW SNAPSHOTS FOR PRODUCT:
SNAPSHOT_ID | SNAPSHOT_TIMESTAMP
---------------------+-------------------------
9200563116884920042 | 2023-11-22 14:07:11.568
772896300100219109 | 2023-11-22 14:07:23.075
6627427340973491406 | 2023-11-22 14:07:30.401
5580047607422801480 | 2023-11-22 14:07:36.699
9177117635666586877 | 2023-12-01 12:07:53.511
(5 rows)
此 show snapshot 语句将列出与给定的 iceberg 表关联的所有 snaphosts。 此信息对于使用 AS OF 时间戳记或 AS OF 快照标识执行“时间旅行”查询很有用。 另外,仅允许在 Iceberg 格式的 watsonx.data 表上使用此 show 命令。
参考信息
请参阅 时间旅行和历史数据。