2023 年 Snowpark Python 库版本说明¶
本文包含 Snowpark Library for Python 的版本说明,包括以下内容(如果适用):
行为变更
新功能
面向客户的错误修复
Snowflake 对 Snowpark Library for Python 更新使用语义版本控制。
有关文档,请参阅 Snowpark Python 开发者指南。
版本 1.11.1(2023 年 12 月 7 日)¶
1.11.1 版 Snowpark 库推出了一些新功能。
新功能¶
向
SnowflakeSQLException添加了conn_error属性,该属性存储来自snowflake-connector-python的整个底层异常。添加了对
RelationalGroupedDataframe.pivot()的支持,可在以下模式Dataframe.group_by(...).pivot(...)中访问pivot。添加了实验功能 Local Testing Mode,允许您在本地创建和操作 Snowpark Python DataFrames,无需连接到 Snowflake 账户。您可以使用此本地测试框架在开发机器或 CI(持续集成)管道中,本地测试您的 DataFrame 操作,然后再将代码变更部署到账户。
添加了对
snowflake.snowpark.functions中arrays_to_object新函数的支持:添加了对向量数据类型的支持。
依赖项更新¶
升级了 cloudpickle 依赖项,以兼容
cloudpickle==2.2.1。将
snowflake-connector-python更新到了版本3.4.0。
错误修复¶
DataFrame 列名引用检查现在支持换行字符。
修复了在执行
df.write.save_as_table时session.read.with_metadata生成的 DataFrame 会创建不一致表的错误。
版本 1.10.0(2023 年 11 月 3 日)¶
1.10.0 版 Snowpark 库推出了一些新功能。
新功能¶
在
DataFrame.to_local_iterator()中添加了对大小写敏感性管理的支持。通过在
UDTFRegistration.register、UDTFRegistration.register_file和functions.pandas_udtf中使用可选参数input_names,添加了对指定矢量化 UDTF 输入列名称的支持。默认情况下,RelationalGroupedDataFrame.applyInPandas将根据当前 DataFrame 架构推断列名称。为由 SQL 异常引起的
SnowflakeSQLException添加了sql_error_code和raw_message属性。
错误修复¶
修复了
DataFrame.to_pandas()中的一个错误,该错误会导致将 Snowpark DataFrames 转换为 Pandas DataFrames 时,超过 19 位的整数失去精度。修复了
session.add_packages中的一个错误,该错误会导致无法处理包含带有下划线和版本项目名称的需求说明符。修复了使用
offset且父DataFrame使用limit时,DataFrame.limit()中的一个错误。offset现在不会影响父 DataFrame 的limit。修复了
DataFrame.write.save_as_table中的一个错误,该错误会导致通过读取 API 创建的 DataFrames 无法将数据保存到 Snowflake 中,原因是$1列名无效。
行为变更¶
更改了
date_format的行为:format实参从可选更改为必填。返回的结果从日期对象更改为日期格式字符串。
使用窗口函数或序列相关数据生成器(
normal、zipf、uniform、seq1、seq2、seq4、seq8)函数时,生成查询时将不再对排序和筛选操作进行展平处理。
版本 1.9.0(2023 年 10 月 16 日)¶
1.9.0 版 Snowpark 库推出了一些新功能。
新功能¶
添加了对 Python 3.11 运行时环境的支持。
为
ARRAY和OBJECT字面量支持PythonObjJSONEncoderJSON 可序列化对象。
依赖项更新¶
重新添加了
typing-extensions的依赖项。
错误修复¶
修复了一个错误,即对于临时存储过程、UDTFs、UDFs 和 UDAFs,从永久暂存区位置进行的导入会被忽略。
DataFrameWriter.save_as_table恢复为使用 CTAS (CREATE TABLE AS SELECT) 语句,该语句在写入表时不需要插入权限。
版本 1.8.0(2023 年 9 月 14 日)¶
1.8.0 版 Snowpark 库推出了一些新功能。
新功能¶
添加了在注册 UDFs 时对
VOLATILE和IMMUTABLE关键字的支持。添加了使用
DataFrame.save_as_table保存 DataFrame 时,对指定群集密钥的支持。使用
Session.create_dataframe创建 DataFrame 时,接受schema的Iterable对象输入。添加了
DataFrame.session属性以返回Session对象。添加了
Session.session_id属性以返回表示会话 ID 的整数。添加了
Session.connection属性以返回SnowflakeConnection对象。添加了对从配置文件或环境变量创建 Snowpark 会话的支持。
依赖项更新¶
snowflake-connector-python已更新到 3.2.0。
错误修复¶
修复了一个错误,即使在
session.add_packages中添加了兼容的包版本,自动包上传也会引发ValueError。修复了导致在使用
register_from_file时正确注册表存储过程的错误。修复了 DataFrame 联接失败时出现
invalid_identifier的错误。修复了
DataFrame.copy在返回副本时禁用 SQL 简化器的错误。修复了如果为
session.sql()指定任何参数,session.sql().select()将会失败的错误。
版本 1.7.0(2023 年 8 月 28 日)¶
1.7.0 版 Snowpark 库推出了一些新功能。
行为变更¶
在使用参数
is_permanent=False创建存储过程、UDFs、UDTFs 和 UDAFs 时,即使提供了stage_name,也会创建临时对象。is_permanent的默认值为False,因此如果不明确地将永久对象的该值设置为True,用户就会发现行为发生了变化。types.StructField现在默认引用列标识符。
新功能¶
添加了
external_access_integrations和secrets参数,可在从 Snowpark Python 创建 UDF、UDTF 或存储过程时使用,以便与外部访问集成。在
snowflake.snowpark.functions中添加了对以下新函数的支持:array_flatten和flatten。在
snowflake.snowpark.relational_grouped_dataframe中添加了对apply_in_pandas的支持。添加了通过
Session.replicate_local_environment在Snowflake 上复制本地 Python 环境的支持。
错误修复¶
修复了在无效性受顺序影响或已给出数据时,
session.create_dataframe无法正确设置可为 null 的列的错误。修复了在使用表格函数时,当表格函数的输出列与 DataFrame 中的列重叠时,
DataFrame.select无法识别和别名列的错误。
版本 1.6.1(2023 年 8 月 2 日)¶
行为变更¶
对于用户提供的架构,或根据用户输入的数据推断的架构,
DataFrameWriter.save_as_table现在支持可为 null 的字段。
新功能¶
添加了对
snowflake.snowpark.functions中新函数的支持:array_sortsort_arrayarray_minarray_maxexplode_outer
添加了对通过
Session.add_requirements或Session.add_packages指定的纯 Python 包的支持。现在,即使 Snowflake Anaconda 通道上不存在包,它们也可以在存储过程和 UDFs 中使用。添加了会话参数
custom_packages_upload_enabled和custom_packages_force_upload_enabled,以启用上述纯 Python 软件包支持功能。这两个参数默认都为False。通过将 conda 环境 YAML 文件传递给
Session.add_requirements,添加了对指定包要求的支持。添加了对包含绑定变量的多查询 DataFrame 的异步执行的支持。
添加了对重命名
DataFrame.rename中多个列的支持。添加了对几何图形数据类型的支持。
添加了对存储过程中
session.sql()内的参数的支持。添加了对用户定义聚合函数 (UDAFs) 的支持。此功能目前处于非公开预览阶段。
添加了对矢量化用户定义表函数(矢量化 UDTFs)的支持。此功能目前处于公开预览阶段。
添加了对 Snowflake 时间戳变体(即
TIMESTAMP_NTZ、TIMESTAMP_LTZ、TIMESTAMP_TZ)的支持:在
TimestampType构造函数中添加 TimestampTimezone 为实参。添加了类型提示:
NTZ、LTZ、TZ和时间戳,用于在注册 UDFs 时对函数进行注释。
改进¶
移除了冗余的依赖项类型扩展。
现在,
DataFrame.cache_result会在当前数据库和架构下创建完全限定名称的临时表。
错误修复¶
修复了在导入 pandas 之前对 pandas 进行类型检查的错误。
修复了从
numpy.ufunc创建 UDF 时的一个错误。修复了启用 SQL 简化器时,
DataFrame.union无法生成正确Selectable.schema_query的错误。
依赖项更新¶
snowflake-connector-python已更新至版本 3.0.4。
版本 1.5.1(2023 年 6 月 20 日)¶
新功能和更新¶
添加了对 Python 3.10 运行时环境的支持。
版本 1.5.0(2023 年 6 月 13 日)¶
行为变更¶
DataFrame.agg和DataFrame.describe等函数的聚合结果不再从列名中剥离非打印字符。
新功能和更新¶
添加了对 Python 3.9 运行时环境的支持。
添加了对
snowflake.snowpark.functions中新函数的支持:array_generate_rangearray_unique_aggcollect_setsequence添加了对使用
TABLE返回类型注册和调用存储过程的支持。添加了对
StringType()中参数长度的支持,以便指定列可以存储的最大字符数。为
functions.get()添加了别名functions.element_at()。为
functions.contains添加了别名Column.contains。添加了实验功能
DataFrame.alias。添加了对使用
DataFrameReader创建DataFrame时从暂存区查询元数据列的支持。添加了对
StructType.add的支持,以便在现有StructType对象中追加更多字段。添加了对
StoredProcedureRegistration.register_from_file()中参数execute_as的支持,以便指定存储过程调用者权限。
错误修复¶
修复了在启用
Dataframe.join_table_function简化器时, SQL 无法运行所有必要查询来设置联接表函数的错误。修复了自定义类型的类型提示声明:会中断
mypy检查的ColumnOrName、ColumnOrLiteralStr、ColumnOrSqlExpr、LiteralType和ColumnOrLiteral。修复了
DataFrame.copy_into_table和DataFrameWriter.save_as_table无法解析完全限定表名的错误。
版本 1.4.0(2023 年 4 月 24日)¶
新功能¶
添加了对
session.getOrCreate的支持。添加了对别名
Column.getField的支持。添加了对
snowflake.snowpark.functions中新函数的支持:date_add和date_sub让使加减运算变得更简单。ddaydiffdexplodedarray_distinctdregexp_extractdstructdformat_numberdbrounddsubstring_index
在使用
register_from_file创建 UDFs、UDTFs 和存储过程时,添加了参数skip_upload_on_content_match,用于在暂存区中已有相同版本的文件时,跳过将文件上传到暂存区。添加了
DataFrame.save_as_table方法的支持,以获取包含点的表名。当
DataFrame.filter()或DataFrame.order_by()后跟投影语句(例如DataFrame.select()、DataFrame.with_column())时,生成的 SQL 将变得扁平化。添加了对使用
Dataframe.create_or_replace_dynamic_table创建动态表(专用预览版)的支持。在
session.sql()中添加了可选实参params,以支持绑定变量。请注意,存储过程中尚不支持此实参。
错误修复¶
修复了
strtok_to_array中在传入分隔符时会产生异常的错误。修复了
session.add_import中可导致模块与其他依赖项使用相同命名空间的错误。
版本 1.3.0(2023 年 3 月 28 日)¶
新功能¶
添加了
functions.initcap()中分隔符参数的支持。添加了对
functions.hash()接受变量数输入表达式的支持。添加了 API
Session.conf,用于获取、设置或检查任何运行时配置的可变性。添加了对使用
case_sensitive参数管理来自DataFrame.collect的Row结果的大小写敏感性的支持。为
snowflake.snowpark.types.StructType添加了索引器支持。为
Dataframe.collect和Dataframe.collect_no_wait添加了关键字实参log_on_exception,可以选择性地禁用 SQL 异常的错误日志记录。
错误修复¶
修复了在调用另一个 DataFrame 设置操作和
DataFrame.select或DataFrame.with_column之后,调用 DataFrame 操作(DataFrame.subtract、DataFrame.union等)会引发异常的错误。修复了链式排序语句被 SQL 简化器覆盖的错误。
改进¶
简化了 JOIN 查询,默认情况下使用常量子查询别名(
SNOWPARK_LEFT、SNOWPARK_RIGHT)。用户可以在运行时使用session.conf.set('use_constant_subquery_alias', False)禁用此功能,改用随机生成的别名。允许在
session.call()中指定语句参数。在存储过程中启用上传大型 pandas DataFrames 的功能,默认块大小为 100,000 行。
版本 1.2.0(2023 年 3 月 2 日)¶
新功能和更新¶
添加了对在注册存储过程时在生成的脚本中以注释形式显示源代码的支持。默认情况下,此功能处于启用状态,可在注册时指定
source_code_display=False将其关闭。在从 Snowpark Python 创建 UDF、UDTF 或存储过程时添加了参数
if_not_exists,以在指定函数或过程已存在的情况下忽略创建该函数或过程。调用
snowflake.snowpark.functions.get从数组中提取值时接受整数。在函数中添加了
functions.reverse,以开放对 Snowflake 内置函数 REVERSE 的访问。在
snowflake.snowflake.files.SnowflakeFile.open()(专用预览版中)中添加了参数require_scoped_url,以取代已标记弃用的is_owner_file。
错误修复¶
修复了在创建 Snowpark 会话时将
paramstyle重写为qmark的错误。修复了
df.join(..., how="cross")失败并出现SnowparkJoinException: (1112): Unsupported using join type 'Cross'的错误。修复了查询通过链式函数调用创建的
DataFrame列时使用错误列名的错误。
版本 1.1.0(2023 年 1 月 26 日)¶
新功能和更新¶
添加了
asc、asc_nulls_first、asc_nulls_last、desc、desc_nulls_first、desc_nulls_last、date_part和unix_timestamp函数。添加
DataFrame.dtypes属性,用于返回列名和数据类型对的列表。添加了以下别名:
functions.expr() for functions.sql_expr()。functions.date_format() for functions.to_date()。functions.monotonically_increasing_id() for functions.seq8()。functions.from_unixtime() for functions.to_timestamp()。
错误修复¶
修复了 SQL 简化器中在某些情况下无法很好地处理列别名和连接的错误。有关详细信息,请参阅 https://github.com/snowflakedb/snowpark-python/issues/658 (https://github.com/snowflakedb/snowpark-python/issues/658)。
修复了 SQL 简化器中为函数调用、NaN 和 INF 生成错误列名的错误。
改进¶
Snowflake 7.3 发布后,会话参数
PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER将变为True。在 snowpark-python 中,session.sql_simplifier_enabled默认读取PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER的值,这意味着在 Snowflake 7.3 版本发布后,SQL 简化器将默认启用。要关闭此功能,请将 Snowflake 中的PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER设置为 False,或从 Snowpark 运行session.sql_simplifier_enabled = False。建议使用 SQL 简化器,因为它有助于生成更简洁的 SQL。