DATA_RETENTION_TIME_IN_DAYS最大值控制参数及配置报错问题
影响Snowflake DATA_RETENTION_TIME_IN_DAYS参数最大值的因素
- 表类型限制
Snowflake不同类型的表支持的最大时间旅行保留期存在固定差异:- 永久表(PERMANENT):企业版默认最高支持90天
- 临时表(TEMPORARY)、瞬态表(TRANSIENT):最大保留期固定为1天,无法设置更高数值,这是当前设置1可生效、设置5报错的最常见原因。
- 父级对象的参数继承限制
Snowflake参数遵循「账号>数据库>Schema>表」的层级继承规则,下层对象的DATA_RETENTION_TIME_IN_DAYS取值不能超过上层对象的配置上限:- 优先检查表所属Schema的
DATA_RETENTION_TIME_IN_DAYS和MAX_DATA_EXTENSION_TIME_IN_DAYS参数值 - 再检查Schema所属数据库的对应参数值
如果父级对象的对应参数配置为1,表级就无法设置超过1的数值。
- 优先检查表所属Schema的
- 账号/组织级全局配置限制
部分企业会在组织或账号层面统一设置数据保留期的全局上限,覆盖版本默认的90天阈值,如果全局配置上限低于5也会触发报错。同账号其他数据库可以正常设置为5的情况下,该原因可以优先排除。
快速排查步骤
- 执行以下SQL确认表类型:
查看返回结果中的SHOW TABLES LIKE 'MY_TABLE' IN SCHEMA <替换为实际Schema名称>;kind字段,若为TRANSIENT或TEMPORARY即可确认是表类型限制导致的报错。 - 执行以下SQL查看父级对象参数配置:
检查两个返回结果中的-- 查看所属数据库参数 DESCRIBE DATABASE <替换为实际数据库名称>; -- 查看所属Schema参数 DESCRIBE SCHEMA <替换为实际Schema名称>;DATA_RETENTION_TIME_IN_DAYS和MAX_DATA_EXTENSION_TIME_IN_DAYS参数值是否低于5。
内容的提问来源于stack exchange,提问作者Juha Syrjälä
相关产品推荐
相关产品推荐

