2022 年 8 月

本月推出了以下新功能、行为变更和更新(增强、修复等)。如果您对这些新增功能有任何疑问,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge)。

重要

每个版本都可能包含需要刷新 Web 界面的更新。

为确保这些更新不会影响您的使用,我们建议的一般做法是在部署每个 Snowflake 版本后刷新 Web 界面。

本主题内容:

新功能

支持 GEOMETRY 数据类型 – 预览

在此版本中,我们很高兴宣布用户可预览对新 GEOMETRY 数据类型的支持。GEOMETRY 数据类型表示平面(欧几里得、笛卡尔)坐标系中的特征。所有 Snowflake 账户均可使用此功能。

此版本提供用于构建、格式化、测量和计算 GEOMETRY 对象之间关系的函数。使用这些函数,可以通过标准格式数据(包括 WKT、WKB 和 GeoJSON)构建 GEOMETRY 对象。

有关更多信息,请参阅 地理空间数据类型

预览版功能用于评估和测试目的。不建议在生产环境中使用这些功能。

以 Java 编写的 Snowpark 存储过程 – 正式发布

在该版本中,我们很高兴地宣布以 Java 编写的 Snowpark 存储过程在 Amazon Web Services (AWS) 和 Microsoft Azure 上正式发布。在 Google Cloud Platform (GCP) 上,可预览以 Java 编写的存储过程。

在存储过程中,可以使用 Snowpark API for Java 在 Snowflake 中托管数据管道。例如,当您需要在不运行客户端应用程序的情况下(如从任务中)执行 Snowpark 代码时,您可以编写存储过程。

有关更多信息,请参阅 使用 Java 编写存储过程

以 Scala 编写的 Snowpark 存储过程 – 正式发布

在该版本中,我们很高兴地宣布以 Scala 编写的 Snowpark 存储过程在 Amazon Web Services (AWS) 和 Microsoft Azure 上正式发布。在 Google Cloud Platform (GCP) 上,可预览以 Scala 编写的存储过程。

在存储过程中,您可以使用 Snowpark API for Scala 在 Snowflake 中托管您的数据管道。例如,当您需要在不运行客户端应用程序的情况下(如从任务中)执行 Snowpark 代码时,您可以编写存储过程。

有关更多信息,请参阅 使用 Scala 编写存储过程

账户复制 – 预览

在该版本中,我们很高兴宣布 账户复制 功能可供公开预览。此功能引入了两个新的 Snowflake 对象,即 复制组和故障转移组。复制组允许客户指定要复制到哪些区域或云平台的账户对象,复制时间间隔可自定义安排。通过故障转移组可以对一个组中的账户对象进行复制和故障转移。组中的对象按照时间点一致性的原则从源账户复制到一个或多个目标账户。

账户对象可以包括仓库、用户和角色,以及数据库和共享(请参阅 复制对象,以查看可包含在复制组或故障转移组中的对象的完整列表)。账户对象可以分为一组或多组。

在发生故障转移的情况下,账户复制可以将整个账户故障转移到不同的区域或云平台。每个复制和故障转移组都有自己的复制时间表,可以针对不同的对象组设置不同的复制频率。对于故障转移组,它还可以单独启用组的故障转移。您可以选择对所有故障转移组进行故障转移,也可以仅选择故障转移组。

SQL 更新

INFER_SCHEMA 函数:新的参数

在此版本中,Snowflake 为 INFER_SCHEMA 函数提供了两个新实参:

FILES = ( 'file_name' [ , 'file_name' ... ] )

指定一个列表,它由一组包含半结构化数据的暂存文件中的一个或多个文件名(以逗号分隔)构成。

IGNORE_CASE = TRUE | FALSE

指定从暂存区文件检测到的列名是否区分大小写。默认情况下,值为 FALSE,这意味着 Snowflake 在检索列名时保留字母字符的大小写。如果将值指定为 TRUE,则列名被视为 不区分大小写,并且所有列名均以大写字母形式检索。

在未来的版本中,INFER_SCHEMA 函数的输出将包含一个新的 ORDER_ID 列,该列指示暂存文件中的列顺序。有关更多信息,请参阅 行为变更日志

CREATE EXTERNAL TABLE:从暂存文件派生列定义 – 预览

在此版本中,Snowflakes 支持这样做:使用从一组包含半结构化数据的暂存文件派生的列定义创建新的外部表。请在 CREATE EXTERNAL TABLE 语句中包含 USING TEMPLATE 关键字。以前,此功能仅适用于表。

例如:

CREATE OR REPLACE EXTERNAL TABLE myet
    USING TEMPLATE (
      SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*))
        FROM TABLE(
          INFER_SCHEMA(
            LOCATION=>'@filestage',
            FILE_FORMAT=>'ffparquet'
          )
        )
    )
    location=@filestage
    file_format=ffparquet
    auto_refresh=false;
Copy

新 SQL 函数

最近版本中推出了以下函数:

函数类别

新函数

描述

地理空间(转换)

ST_DIFFERENCE

给定两个 GEOGRAPHY 输入对象,返回一个 GEOGRAPHY 对象,它表示第一个对象中不在第二个对象中的点(即两个对象之间的差异)。

地理空间(转换)

ST_INTERSECTION

给定两个 GEOGRAPHY 输入对象,返回一个 GEOGRAPHY 对象,它表示两个输入对象都拥有的点的集合(即两个对象的交集)。

地理空间(转换)

ST_SYMDIFFERENCE

给定两个 GEOGRAPHY 输入对象,返回一个 GEOGRAPHY 对象,它表示两个输入对象中不是对象交集一部分的点的集合(即两个对象的对称差)。

地理空间(转换)

ST_UNION

给定两个 GEOGRAPHY 输入对象,返回一个 GEOGRAPHY 对象,它表示两个对象中所有点的合集(即两个对象的并集)。

地理空间(访问器)

ST_ENDPOINT

返回 LineString 中的最后一个点。

地理空间(访问器)

ST_POINTN

返回 LineString 中指定索引处的点。

地理空间(访问器)

ST_STARTPOINT

返回 LineString 中的第一个点。

数据管道更新

任务:支持在单个 SQL 语句中指定多个前置任务

任务的有向无环图 (DAG) 由单个根任务和一组子任务组成(根据它们之间的依赖关系进行组织)。除根任务及其直接子任务之外,DAG 中的所有任务都能有多个前置任务。只有在所有前置任务成功运行至完成后,一项任务才能运行。

在此版本中,您可以在创建新任务(使用 CREATE TASK ...AFTER)或之后(使用 ALTER TASK ...ADD AFTER)指定多个前置任务。现有的 SQL 命令语法现在支持以逗号分隔的任务列表。

以下示例创建无服务器任务 a4,并指定任务 a1a2a3 作为前置任务。该任务执行一个简单的查询:

CREATE TASK a4
  AFTER a1, a2, a3
  AS SELECT 1;
Copy

以下示例修改现有的任务 b4,并指定任务 b1b2b3 作为前置任务。

ALTER TASK b4 ADD AFTER b1, b2, b3;
Copy

以前,用户在创建任务或修改任务时只能指定单个前置任务。

组织更新

ORGADMIN 角色 – 正式发布

在此版本中,我们很高兴地宣布 Snowflake 中的 ORGADMIN 角色已正式发布。具有 ORGADMIN 角色的组织管理员可以:

  • 查看组织下的所有 Snowflake 账户和区域

  • 在组织下创建新的 Snowflake 账户

  • 重命名组织中的 Snowflake 账户

  • 访问 ORGANIZATION_USAGE 架构,它提供属于组织的所有 Snowflake 账户的使用情况和计费数据

对于拥有多个账户的组织,ORGADMIN 角色在创建的第一个账户中可用(除非您请求将其添加到其他账户)。 通过在 Web 界面的角色列表中查找 ORGADMIN,可以验证能否使用该角色。

账户管理员(即具有 ACCOUNTADMIN 角色的用户)可以执行以下命令,以将 ORGADMIN 角色授予自己或任何其他用户:

GRANT ROLE ORGADMIN TO USER user1;
Copy

有关更多信息,请参阅 Organizations 简介

用于监控成本的 ORGANIZATION_USAGE 视图 – 正式发布

在此版本中,我们很高兴地宣布,在 SNOWFLAKE 共享数据库中的 ORGANIZATION_USAGE 架构 内正式发布以下视图。可以使用这些视图跨组织中的所有账户在对象级别上分解成本:

  • 存储:

    • DATABASE_STORAGE_USAGE_HISTORY

    • STAGE_STORAGE_USAGE_HISTORY

  • 数据传输:

    • DATA_TRANSFER_HISTORY

  • 无服务器功能:

    • AUTOMATIC_CLUSTERING_HISTORY

    • MATERIALIZED_VIEW_REFRESH_HISTORY

    • PIPE_USAGE_HISTORY

    • REPLICATION_USAGE_HISTORY

    • SEARCH_OPTIMIZATION_HISTORY

支持重命名账户

在此版本中,组织管理员无需联系 SnowflakeSupport即可使用 ALTER ACCOUNT 命令重命名账户。以下示例将名为 original_acctname 的账户重命名为 new_acctname

ALTER ACCOUNT original_acctname RENAME TO new_acctname;
Copy

默认情况下,Snowflake 继续允许您使用旧 URL 与以前的名称访问账户,同时也支持包含新账户名称的新 URL。您可以选择删除旧 URL,以要求使用新 URL 访问账户。有关详细信息,请参阅 管理组织中的账户

数据治理更新

访问历史记录:查看使用者账户中的共享对象访问

在此版本中,Snowflake 添加了以下功能:查看使用者账户中的用户对使用 Snowflake Secure Data Sharing 共享的对象的访问。通过此更新,Snowflake 将在共享中访问的对象记录在 Account Usage 中的 ACCESS_HISTORY 视图base_objects_accessed 列内。

例如,如果提供商向使用者账户共享一个表和根据此表构建的视图,并且发生对该共享视图的查询,则 Snowflake 会在 base_objects_accessed 列内记录对该共享视图的访问。此记录包含 columnNameobjectName 值,可让使用者知道在其账户中访问了哪个对象,并且还保护了提供商,因为基础表(通过 objectIdcolumnId 标识)不会透露给使用者。

掩码策略和行访问策略:在映射表查找中添加了对 IS_ROLE_IN_SESSION 的支持

在此版本中,Snowflake 通过允许 IS_ROLE_IN_SESSION 上下文函数支持映射表查找,增强了掩码策略和行访问策略的通用性。现在,策略管理员可以编写策略条件,以使用此函数来调用映射表查找,以便确定用户在会话中的活动主要或次要角色是否继承已向上下文函数的实参指定的角色授予的权限。通过此增强功能,如果策略条件需要在当前角色的角色层次结构中检查已启用的角色,Snowflake 鼓励客户在此类策略条件中使用 IS_ROLE_IN_SESSION 上下文函数。

有关更多信息,请参阅 了解列级安全性了解行访问策略

掩码策略:查询有关 NULL、长度、尺度和精度返回值的策略条件的视图

在此版本中,Snowflake 在共享的 SNOWFLAKE 数据库中提供了一个新的临时视图,名为:

SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT

该视图有助于识别掩码策略的条件与列的长度、尺度或精度不匹配的情况,或者策略条件何时为 NOT NULL 列返回了 NULL 值。该视图返回从 2022 年 7 月 15 日开始的记录。

提供该视图是为了帮助确定 2022_07 行为变更捆绑包将如何影响对掩码策略保护的列进行的查询,并提供足够的时间来开始掩码策略条件的更新过程。

有关详细信息,请参阅 减少掩码策略返回值更新

语言: 中文