IBM Cloud Docs
Iceberg 表的时间旅行

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 命令。

参考信息

请参阅 时间旅行和历史数据