类别:

系统函数 (系统信息)

SYSTEM$AUTO_REFRESH_STATUS

返回外部管理的 Iceberg 表 的自动刷新状态。

备注

要返回您拥有访问权限的所有适用的外部托管 Apache Iceberg™ 表的刷新状态,请运行该 SHOW ICEBERG TABLES 命令并查看输出中的 auto_refresh_status 列。

语法

SYSTEM$AUTO_REFRESH_STATUS('<table_name>')
Copy

实参

'table_name'

您要检索当前自动刷新状态的 Iceberg 表的名称。

如果使用完全限定名称,整个名称必须放在单引号内,包括数据库和架构。如果表名区分大小写或包含任何特殊字符或空格,则必须使用双引号。将双引号放在单引号内,例如,'"Table_Name"'

返回

该函数返回包含以下名称/值对的 JSON 对象:

{
  "executionState":"<value>",
  "invalidExecutionStateReason":"<value>",
  "pendingSnapshotCount":"<value>",
  "oldestSnapshotTime":"<value>",
  "currentSnapshotId":"<value>",
  "currentSnapshotSummary":"<value>",
  "lastSnapshotTime":"<value>",
  "lastUpdatedTime":"<value>",
  "currentMetadataFile":"<value>",
  "currentSchemaId":"<value>"
}
Copy

其中:

executionState

当前执行状态的管道,Snowflake 用于自动化表的元数据刷新。

值:

  • RUNNING:自动刷新按预期运行。此状态并不表示 Snowflake 是否正在为管道主动处理事件消息。

  • STALLED:自动刷新遇到错误,正在尝试恢复。

  • STOPPED:自动刷新遇到无法恢复的错误,除非您采取进一步的措施,否则将停止。有关更多信息,请参阅 错误恢复

invalidExecutionStateReason

STALLEDSTOPPED 执行状态相关的错误消息。

pendingSnapshotCount

排队等待自动刷新快照的数量。

oldestSnapshotTime

排队快照中最早的时间戳。Snowflake 在快照添加到队列时设置快照的时间戳。

currentSnapshotId

Snowflake 正在跟踪的当前快照的 ID。这代表当前表数据对应的快照。

currentSnapshotSummary

metadata.json 文件中的 Iceberg 快照摘要。如果元数据文件中不存在,则为 NULL。

lastSnapshotTime

根据 Iceberg 元数据创建的当前快照时间戳。此时间戳对应于在外部目录中生成当前快照的时间。

lastUpdatedTime

时间戳,表示 Snowflake 成功处理当前快照的时间。此值与 lastSnapshotTime 之间的差异表示在外部目录中创建快照的时间与 Snowflake 成功刷新表元数据之间的延迟。

为了减少延迟,请调整与表相关的目录集成的 REFRESH_INTERVAL_SECONDS 参数。

currentMetadataFile

当前元数据文件的完整路径。

currentSchemaId

当前架构的 ID。

使用说明

  • 调用此函数需要对 Iceberg 表具有 OWNERSHIP 权限的角色。

  • 对于基于 Delta 的表,请注意以下事项:

    • 在此函数和 Snowflake 中的自动刷新中,“快照”一词是指 Delta 提交。

    • 该函数不返回 lastSnapshotTime 的值。

示例

检索表 my_iceberg_table 在架构 db1.schema1 中的自动刷新状态:

SELECT SYSTEM$AUTO_REFRESH_STATUS('db1.schema1.my_iceberg_table');
Copy
语言: 中文