- 类别:
表函数 (Information Schema)
STORAGE_LIFECYCLE_POLICY_HISTORY¶
返回您账户中过去 14 天内 存储生命周期策略 的执行历史记录。
使用此表函数查询最近的策略执行(已完成或仍在运行),按执行结束时间降序排列。关监控存储生命周期策略的更多信息,请参阅 Monitor storage lifecycle policies。
语法¶
按对象
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 |
策略附加对象的域(类型);例如 |
STATE |
VARCHAR |
策略执行状态: |
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 |
单个任务状态: |
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')
)
);