类别:

表函数 (Information Schema)

STORAGE_LIFECYCLE_POLICY_HISTORY

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

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

另请参阅:

CREATE STORAGE LIFECYCLE POLICYALTER STORAGE LIFECYCLE POLICYDROP 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> ] )
Copy

按存储生命周期策略

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

实参

备注

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

  • 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

函数返回的最大行数。

范围:11000

默认: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

策略执行状态:QUEUEDEXECUTINGSUCCEEDEDFAILED

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

单个任务状态:SUCCEEDEDFAILED

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_NAMEREF_ENTITY_DOMAIN 实参,以检索名为 t1 的表的存储生命周期策略历史记录:

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

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

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

检索指定策略在过去一小时内计划的最近 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
  )
);
Copy

检索指定表在 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')
  )
);
Copy
语言: 中文