类别:

表函数 (Information Schema)

STORAGE_LIFECYCLE_POLICY_HISTORY

返回您账户中过去 14 天内 存储生命周期策略 的执行历史记录。

使用此表函数查询最近的策略执行(已完成或仍在运行),按执行结束时间降序排列。关监控存储生命周期策略的更多信息,请参阅 Monitor storage lifecycle policies。

另请参阅:

CREATE STORAGE LIFECYCLE POLICY、ALTER STORAGE LIFECYCLE POLICY、DROP STORAGE LIFECYCLE POLICY

语法

按对象

STORAGE_LIFECYCLE_POLICY_HISTORY(
  REF_ENTITY_NAME => '<string>',
  REF_ENTITY_DOMAIN => '<string>'
  [, TIME_RANGE_START => <constant_expr> ]
  [, TIME_RANGE_END => <constant_expr> ]
  [, RESULT_LIMIT => <integer> ] )

按存储生命周期策略

STORAGE_LIFECYCLE_POLICY_HISTORY(
  POLICY_NAME => '<string>'
  [, TIME_RANGE_START => <constant_expr> ]
  [, TIME_RANGE_END => <constant_expr> ]
  [, RESULT_LIMIT => <integer> ] )

实参

备注

调用该函数时,请指定以下选项之一:

  • REF_ENTITY_NAME 和 REF_ENTITY_DOMAIN:检索附加到某个对象(表)的所有存储生命周期策略的执行历史记录。

  • POLICY_NAME:选择使用 时默认使用的角色和仓库。检索指定名称的特定存储生命周期策略的执行历史记录。

必填:

REF_ENTITY_NAME => 'string'

执行所在对象(表)的标识符;例如,存储生命周期策略所附加的表名。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。有关更多信息,请参阅 标识符要求。

REF_ENTITY_DOMAIN => 'string'

存储生命周期策略所附加的对象类型:

  • 'Table':选择使用 时默认使用的角色和仓库。指定存储生命周期策略附加到表。

POLICY_NAME => 'string'

要检索其执行历史的存储生命周期策略的标识符。如果未指定策略名称,则必须为 REF_ENTITY_NAME 和 REF_ENTITY_DOMAIN 指定值。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求。

可选:

TIME_RANGE_START => constant_expr、. TIME_RANGE_END => constant_expr

过去 14 天内策略执行发生的时间范围。

如果未指定任一参数,函数将按 END_TIME 降序返回最近策略执行的行(最多 RESULT_LIMIT 行)。

RESULT_LIMIT => integer

函数返回的最大行数。

范围:1 至 1000

默认:1000。

返回

函数返回存储生命周期策略的执行历史记录。每条记录包含策略执行的信息,包括策略名称、关联表、执行状态、开始和结束时间以及执行结果。

有关详细列说明,请参阅 输出。

输出

该函数返回以下列:

列名称

数据类型

描述

POLICY_DB

VARCHAR

包含该策略的数据库的名称。

POLICY_SCHEMA

VARCHAR

包含该策略的架构的名称。

POLICY_NAME

VARCHAR

策略的名称。

REF_ENTITY_DB

VARCHAR

包含策略附加对象的数据库的名称。

REF_ENTITY_SCHEMA

VARCHAR

包含策略附加对象的架构的名称。

REF_ENTITY_NAME

VARCHAR

策略附加对象的名称。

REF_ENTITY_DOMAIN

VARCHAR

策略附加对象的域(类型);例如 Table。

STATE

VARCHAR

策略执行状态:QUEUED、EXECUTING、SUCCEEDED 或 FAILED。

START_TIME

TIMESTAMP_LTZ

策略执行中任一任务开始的最早时间戳。

END_TIME

TIMESTAMP_LTZ

策略执行中任一任务完成的最晚时间戳。

EXECUTION_RESULT

VARIANT

包含策略执行期间作业运行结果的 JSON 对象。有关更多信息,请参阅 EXECUTION_RESULT 字段。

POLICY_BODY

VARCHAR

存储生命周期策略的正文内容。

EXECUTION_RESULT 字段

EXECUTION_RESULT 列是一个 JSON 对象,包含策略执行中每种任务类型的嵌套对象:

  • EXPIRE:选择使用 时默认使用的角色和仓库。包含过期操作结果(永久删除行)。

  • ARCHIVE:选择使用 时默认使用的角色和仓库。包含归档操作结果(将行移动到归档存储)。

  • EXPIRE_ARCHIVE:选择使用 时默认使用的角色和仓库。包含过期操作(从存档存储中永久删除行)的结果。

每个嵌套对象可以包含以下字段,其中特定字段适用于特定任务类型:

字段名称

描述

START_TIME

单个任务的开始时间戳。

END_TIME

单个任务的结束时间戳

STATE

单个任务状态:SUCCEEDED 或 FAILED。

ROWS_EXPIRED

(EXPIRE 任务专用)从活动存储中永久删除的行数。

ROWS_ARCHIVED

(ARCHIVE 任务专用)存档到存储中的行数。

ROWS_EXPIRED_FROM_ARCHIVE

(EXPIRE_ARCHIVE 任务专用)从存档存储中永久删除的行数。

ERROR_MESSAGE_CODE

标识任务执行期间遇到的错误类型的代码。

ERROR_MESSAGE

详细错误消息。

示例 EXECUTION_RESULT 正文:

EXECUTION_RESULT =
{
  “EXPIRE”: {
    “start_time”: "Thu, 27 Jun 2024 02:57:57 -0700",
    “end_time”: "Thu, 27 Jun 2024 02:58:01 -0700",
    “state”: "SUCCEEDED",
    “rows_expired”: 100,
    “error_message_code”: null,
    “error_message”: null
  }
}

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 一项 权限:

权限

对象

备注

APPLY STORAGE LIFECYCLE POLICY

全局

如果调用该函数的角色拥有此权限,Snowflake 将返回该 Snowflake 账户中所有策略及其关联表的全部策略执行记录。

APPLY

存储生命周期策略

要查看某个策略的执行情况,角色还必须对与该策略关联的表具有 OWNERSHIP 权限。如果角色具有全局 APPLY STORAGE LIFECYCLE POLICY 权限,则不需要该权限。

OWNERSHIP

表

要查看策略的执行情况,角色还必须对与该表关联的策略具有 APPLY 权限。如果角色具有全局 APPLY STORAGE LIFECYCLE POLICY 权限,则不需要该权限。

使用说明

  • 返回结果取决于执行查询的角色所拥有的权限:

    • 如果角色具有全局 APPLY STORAGE LIFECYCLE POLICY 权限,Snowflake 会返回账户中所有策略及其表关联的全部策略执行记录。

    • 如果角色对某个特定的存储生命周期策略具有 APPLY 权限,Snowflake 仅会返回调用函数的角色所拥有对象的策略执行记录。

    • 如果角色对该策略具有 APPLY 或 OWNERSHIP 权限,但 没有 该策略附加到的表的 OWNERSHIP 权限,则 Snowflake 不会在结果中显示该策略的执行记录。

    • 如果角色没有策略权限,但对策略附加到的表具有 OWNERSHIP 权限,Snowflake 将返回错误消息,并不会返回任何策略执行记录。

示例

指定 REF_ENTITY_NAME 和 REF_ENTITY_DOMAIN 实参,以检索名为 t1 的表的存储生命周期策略历史记录:

SELECT * FROM
  TABLE (
    INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
      REF_ENTITY_NAME => 'my_db.my_schema.t1',
      REF_ENTITY_DOMAIN => 'Table'
    )
  );

检索所有关联了名为 slp 的策略的表的存储生命周期策略历史记录,并将返回结果限制为 100 行:

SELECT * FROM
  TABLE(
    INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
      POLICY_NAME => 'my_db.my_schema.slp',
      RESULT_LIMIT => 100
    )
  );

检索指定策略在过去一小时内计划的最近 100 次执行记录:

SELECT * FROM
TABLE(
  INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
    POLICY_NAME => 'my_db.my_schema.slp',
    TIME_RANGE_START => DATEADD('HOUR', -1, CURRENT_TIMESTAMP()),
    RESULT_LIMIT => 100
  )
);

检索指定表在 30 分钟时间范围内的策略执行历史记录:

SELECT * FROM
TABLE (
  INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY(
    REF_ENTITY_NAME => 'my_db.my_schema.t1',
    REF_ENTITY_DOMAIN => 'Table',
    TIME_RANGE_START => TO_TIMESTAMP_LTZ('2024-07-08 12:00:00.000 -0700'),
    TIME_RANGE_END => TO_TIMESTAMP_LTZ('2024-07-08 12:30:00.000 -0700')
  )
);