2022_04 捆绑包¶
本主题介绍当月的以下行为变更(如果有):
已弃用的功能。
已启用的捆绑包变更。
已实现的其他非捆绑包变更。
如果您对这些变更有任何疑问,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。
有关本月推出的新功能、增强功能和修复的详细信息,请参阅 2022 年 7 月。
重要
除非另有说明,否则这些变更都在 2022_04 捆绑包中,该捆绑包已在 6.25 版本的更新中默认启用。
本主题内容:
SQL 变更 – 常规¶
使用永久子表克隆永久架构以创建瞬态架构¶
使用克隆永久架构创建瞬态架构时,也会克隆架构中的子对象。
克隆的瞬态架构中子表对象的类型已更改,如下所示:
- 之前:
源架构中的所有永久表都克隆为目标架构中的永久表,所有瞬态表都克隆为瞬态表。
- 现在:
源架构中的所有永久表都将克隆为目标架构中的暂时表。
SQL 变更 – 命令和函数¶
SHOW EXTERNAL TABLES 命令:输出中的新列¶
以下两个新列已添加到 SHOW EXTERNAL TABLES 命令的输出中:
TABLE_FORMAT
LAST_REFRESH_DETAILS
为了帮助限制此变更的影响,该列已添加为输出中的最后一列。
添加这些列是为了支持将来的功能。
SHOW SCHEMAS 命令:更改为架构的 RETENTION_TIME 输出¶
对于 DATA_RETENTION_TIME_IN_DAYS 设置为 0 的数据库中的架构, SHOW SCHEMAS 命令输出中的 RETENTION_TIME 列值已变更如下:
- 之前:
RETENTION_TIME 值是一个空字符串。
- 现在:
RETENTION_TIME 值为 0。
SHOW WAREHOUSES 命令:输出中的新列¶
以下新列已添加到启用了 Query Acceleration Service 功能的账户的 SHOW WAREHOUSES 命令输出中:
列名称 |
描述 |
---|---|
|
仓库是否启用了 Query Acceleration Service。 |
|
Query Acceleration Service 的最大缩放因子。 |
在 comment
和 resource_monitors
列之间添加了新列。依赖于 SHOW WAREHOUSES 命令输出的查询应使用列名称,而不是列输出的硬编码索引。
GET_DDL 函数:对函数和过程输出的更改¶
目前,当您调用 GET_DDL 函数以获取创建 DDL、外部函数或存储过程的 UDF 语句时,函数或过程的名称将用双引号括起来,即使该名称遵循未加引号的对象标识符的规则也是如此。
当您返回函数或过程的完全限定名称时(即当您以 GET_DDL 作为第三个实参调用 TRUE 时),此输出已更改:
- 之前:
GET_DDL 返回带引号的函数或过程的名称:
+-------------------------------------------------------+ | GET_DDL('FUNCTION', 'MYFUNC(FLOAT)', TRUE) | |-------------------------------------------------------| | CREATE OR REPLACE FUNCTION MYDB.MYSCHEMA."MYFUNC" ... | +-------------------------------------------------------+
- 现在:
GET_DDL 返回不带引号的函数或过程的名称:
+-------------------------------------------------------+ | GET_DDL('FUNCTION', 'MYFUNC(FLOAT)', TRUE) | |-------------------------------------------------------| | CREATE OR REPLACE FUNCTION MYDB.MYSCHEMA.MYFUNC ... | +-------------------------------------------------------+
请注意,这仅影响返回函数或过程的完全限定名称的情况。如果省略 GET_DDL 的第三个实参(或指定 FALSE), GET_DDL 则返回带引号的函数或过程的名称:
+-------------------------------------------------------+ | GET_DDL('FUNCTION', 'MYFUNC(FLOAT)') | |-------------------------------------------------------| | CREATE OR REPLACE FUNCTION "MYFUNC" ... | +-------------------------------------------------------+
SQL 变更 – 使用情况视图和 Information Schema 视图/表函数¶
POLICY_REFERENCES 视图 (Account Usage):新列¶
为了支持基于标签的掩码策略, POLICY_REFERENCES 视图(在共享 SNOWFLAKE 数据库的 ACCOUNT_USAGE 架构中)现在包括以下列:
tag_name
tag_database
tag_schema
policy_status
对于这些新列,请注意以下事项:
列、其数据类型和说明与 Information Schema POLICY_REFERENCES 表函数中的相同列匹配。
对于视图中的现有行,Snowflake 将为新列返回 NULL。
此更新仅向视图添加新列。您可以使用基于标签的掩码策略功能,而无需启用此行为变更,前提是您的 Snowflake 账户是 Enterprise Edition(或更高版本)。
为了帮助限制此变更的影响,这些新列已添加为输出中的最后一列。
QUERY_HISTORY 视图 (Account Usage):新列¶
以下新列已添加到 Account Usage QUERY_HISTORY 视图中:
列名称 |
数据类型 |
描述 |
---|---|---|
|
NUMBER |
Query Acceleration Service 扫描的字节数。如果查询未加速,则默认值为 0。 |
|
NUMBER |
Query Acceleration Service 扫描的分区数。如果查询未加速,则默认值为 0。 |
|
NUMBER |
查询将从中受益的上限比例因子。如果查询未加速,则默认值为 0。 |
为了帮助限制此更改的影响,新列已添加为输出中的最后一列。
数据管道变更¶
ALTER STREAM 命令:不再允许设置 APPEND_ONLY 或 INSERT_ONLY 参数¶
创建流后,无法更改流类型。创建流时,类型设置如下:
设置 APPEND_ONLY = TRUE 创建仅追加流。
设置 INSERT_ONLY = TRUE 创建仅插入流。
省略这两个参数以创建标准(增量)流。
现在,尝试使用 ALTER STREAM 命令更改现有流的类型将返回用户错误。
若要更改现有流的类型,必须重新创建流(使用 CREATE OR REPLACE STREAM)并指定所需的流类型。
任务:错误消息更改¶
尝试与无服务器任务相关的无效 SQL 操作(即使用 Snowflake 托管的计算资源运行的任务)时返回的用户错误消息已更改如下:
使用案例 1:使用未授予全局 EXECUTE MANAGED TASK 权限的角色,执行 CREATE TASK 语句并省略 WAREHOUSE 参数。
- 上一个错误文本:
Missing option(s): [WAREHOUSE]
- 当前错误文本:
WAREHOUSE not specified and missing serverless task privilege to create task {task name}. To create it as a user-managed task, specify a WAREHOUSE. To create it as a serverless task, execute the CREATE TASK command with a role that has been granted the 'EXECUTE MANAGED TASK' account-level privilege.
用例 2:使用未授予全局 EXECUTE MANAGED TASK 权限的角色,使用适当的 CREATE .... CLONE 命令,克隆 Serverless Task(或包含一个或多个 Serverless Task 的数据库或架构)。
- 上一个错误文本:
Task {task name} requires a warehouse.
- 当前错误文本:
WAREHOUSE not specified and missing serverless task privilege to create task {task name}. To create it as a user-managed task, specify a WAREHOUSE. To create it as a serverless task, execute the CLONE command with a role that has been granted the 'EXECUTE MANAGED TASK' account-level privilege.
用例 3:使用未授予全局 EXECUTE MANAGED TASK 权限的角色,取消 WAREHOUSE 设置使用客户管理的计算资源运行的现有任务的参数(使用 ALTER TASK ...UNSET WAREHOUSE 语句)。
- 上一个错误文本:
Task {task name} requires a warehouse.
- 上一个错误文本:
Cannot UNSET WAREHOUSE on task {task_name} because its owner role has not been granted the 'EXECUTE MANAGED TASK' account-level privilege. Grant this privilege to the role or use GRANT OWNERSHIP to change the task's owner role to one with this privilege.
用例 4:
使用角色被授予全局 EXECUTE MANAGED TASK 权限(以及其他最低权限),创建和恢复无服务器任务。
从所有者角色(对任务具有 OWNERSHIP 权限的角色)中撤消该 EXECUTE MANAGED TASK 权限。
任务不会暂停并开始其下一次计划运行,或者具有所有者角色的用户执行 EXECUTE TASK 命令以尝试启动任务运行。
- 上一个错误文本:
Cannot execute task, USAGE privilege on the task's warehouse must be granted to the owner role
- 当前错误文本:
无法执行任务,必须向所有者角色授予 EXECUTE MANAGED TASK 权限
这些更改旨在帮助您更好地了解和解决与无服务器任务相关的问题。
数据隐私变更¶
分类:对 Data Classification 模型的更新和修订的输出¶
Data Classification 现已在 AWS 和 Azure 上的所有 Enterprise Edition(或更高版本)账户中正式发布 (GA)。
该功能已 GA,Data Classification 模型已更新,以生成改进的预测模型和数据模式结果。此外,Data Classification 过程现在包括输入中指定的每个表列的输出,包括:
具有以前无法分类的数据类型的列。
仅包含 NULL 值的列。
这些改进是通过行为变更过程引入的,因为在对使用以前的数据分类模型进行分类的数据重新分类时,它们可能会返回更好但不同的结果。在 2022_04 捆绑包的选择退出阶段,您可以启用/禁用捆绑包以测试分类改进,同时最大限度地减少它们对生产账户的影响,直到您熟悉新结果。