2022_07 捆绑包¶
本主题介绍当月的以下行为变更(如果有):
已弃用的功能。
已启用的捆绑包变更。
已实现的其他非捆绑包变更。
如果您对这些变更有任何疑问,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。
有关本月推出的新功能、增强功能和修复的详细信息,请参阅 2022 年 10 月。
重要
除非另有说明,这些更改都位于 2022_07 捆绑包中,该捆绑包在 6.35 版本中默认启用。
本主题内容:
SQL 变更 – 命令和函数¶
CREATE MATERIALIZED VIEW 命令:不再允许 Time Travel 子句¶
物化视图的一个限制是不支持 Time Travel。但是,在运行 CREATE MATERIALIZED VIEW 命令时,可以为视图的基表指定 Time Travel 子句(例如 AT
)。
现在,在 CREATE MATERIALIZED VIEW 中指定 Time Travel 子句会导致错误。
- 之前:
在 CREATE MATERIALIZED VIEW 中指定 Time Travel 子句不会产生错误。
例如,以下语句会成功执行,没有任何错误:
示例 1:
create or replace materialized view mv as select * from basetbl at(offset => -2);
示例 2:
create or replace materialized view mv as select * from basetbl at(timestamp => $ts);
示例 3:
create or replace materialized view mv as select * from basetbl at(statement => $uuid_dml);
- 现在:
现在,在 CREATE MATERIALIZED VIEW 中指定 Time Travel 子句会产生以下错误:
002274 (42601): SQL compilation error: Invalid materialized view: Time travel on base table in line X at position Y.
SQL 变更 – 使用情况视图和 Information Schema 视图/表函数¶
GRANT_TO_ROLES 视图 (Account Usage):对视图的更改¶
向 ACCOUNT_USAGE.GRANTS_TO_ROLES 视图引入了以下变更。
- 之前:
视图的输出包括临时表中角色的权限授予。
- 现在:
视图的输出不包括临时表中角色的权限授予。
数据湖变更¶
CREATE EXTERNAL TABLE 命令:用户指定分区和自动刷新元数据¶
将外部表中的分区定义为用户指定的分区意味着您可以选择性地添加和删除分区,而不是为外部存储位置中符合表达式的所有新文件自动添加分区。此分区类型可在创建外部表时通过包含 PARTITION_TYPE = USER_SPECIFIED
参数来指定。用户指定的分区不支持自动刷新外部表元数据。
在同时设置了 PARTITION_TYPE = USER_SPECIFIED
和 AUTO_REFRESH = TRUE
参数的情况下执行 CREATE EXTERNAL TABLE 语句时,行为已更改如下:
- 之前:
CREATE EXTERNAL TABLE 语句会成功执行,但从云存储接收到的外部表的任何事件通知(如“新对象”消息)都会产生错误。
- 现在:
CREATE EXTERNAL TABLE 语句会返回用户错误。
GET_DDL 函数:返回 Delta Lake 上外部表的 TABLE_FORMAT 参数¶
当 GET_DDL 函数的输入是引用 Delta Lake 表的外部表时,函数返回的 CREATE EXTERNAL TABLE 语句有如下变化:
- 之前:
该语句省略将外部表标识为引用 Delta Lake 表的
TABLE_FORMAT = DELTA
参数。- 现在:
该语句包含
TABLE_FORMAT = DELTA
参数。
可扩展性变更¶
Snowpark for Python:添加无效包时提前返回错误¶
在 Python Snowpark 会话中添加 Python 包时,如果 Snowflake 不支持该包或其指定版本,用户会收到一条错误消息。
收到错误消息的时间已提前:
- 之前:
仅当用户尝试注册 UDF 或存储过程时,才会收到错误。
- 现在:
当使用 add_packages 添加 Python 包时,错误会更早发生。
例如,调用
"session.add_packages('numpy==21.21.21')"
会导致"ValueError"
,因为包版本无效。
Snowpark for Scala 和 Snowpark for Java:对 DeleteResult、MergeResult 和 UpdateResult 中成员类型的更改:¶
在 Snowpark Scala 和 Java APIs 中,DeleteResult
、MergeResult
和 UpdateResult
类提供了值成员和 getter 方法,用于返回已插入、更新和删除的行数:
在 Snowpark Scala API 中,这些值成员被命名为:
rowsInserted
multiJoinedRowsUpdated
rowsUpdated
rowsDeleted
在 Snowpark Java API中,这些 getter 方法被命名为:
getRowsInserted
getMultiJoinedRowsUpdated
getRowsUpdated
getRowsDeleted
在 Snowpark Library for Scala 和 Snowpark Library for Java 的 1.7.0 版本中,这些值成员的类型以及这些 getter 方法的返回类型发生了变化:
- 1.7.0 之前的版本:
在 Scala API 中,类型为
Int
。在 Java API 中,类型为
int
。
- 从 1.7.0 开始:
在 Scala API 中,类型为
Long
。在 Java API 中,类型为
long
。