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 命令输出中:

列名称

描述

enable_query_acceleration

仓库是否启用了 Query Acceleration Service。

query_acceleration_max_scale_factor

Query Acceleration Service 的最大缩放因子。

commentresource_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" ... |
+-------------------------------------------------------+
Copy
现在:

GET_DDL 返回不带引号的函数或过程的名称:

+-------------------------------------------------------+
| GET_DDL('FUNCTION', 'MYFUNC(FLOAT)', TRUE)            |
|-------------------------------------------------------|
| CREATE OR REPLACE FUNCTION MYDB.MYSCHEMA.MYFUNC ...   |
+-------------------------------------------------------+
Copy

请注意,这仅影响返回函数或过程的完全限定名称的情况。如果省略 GET_DDL 的第三个实参(或指定 FALSE), GET_DDL 则返回带引号的函数或过程的名称:

+-------------------------------------------------------+
| GET_DDL('FUNCTION', 'MYFUNC(FLOAT)')                  |
|-------------------------------------------------------|
| CREATE OR REPLACE FUNCTION "MYFUNC" ...               |
+-------------------------------------------------------+
Copy

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 视图中:

列名称

数据类型

描述

QUERY_ACCELERATION_BYTES_SCANNED

NUMBER

Query Acceleration Service 扫描的字节数。如果查询未加速,则默认值为 0。

QUERY_ACCELERATION_PARTITIONS_SCANNED

NUMBER

Query Acceleration Service 扫描的分区数。如果查询未加速,则默认值为 0。

QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

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:

    1. 使用角色被授予全局 EXECUTE MANAGED TASK 权限(以及其他最低权限),创建和恢复无服务器任务。

    2. 从所有者角色(对任务具有 OWNERSHIP 权限的角色)中撤消该 EXECUTE MANAGED TASK 权限。

    3. 任务不会暂停并开始其下一次计划运行,或者具有所有者角色的用户执行 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 捆绑包的选择退出阶段,您可以启用/禁用捆绑包以测试分类改进,同时最大限度地减少它们对生产账户的影响,直到您熟悉新结果。

语言: 中文