2025 年 Snowpark Library for Python 版本说明¶
本文包含 Snowpark Library for Python 的版本说明,包括以下内容(如果适用):
行为变更
新功能
面向客户的错误修复
Snowflake 对 Snowpark Library for Python 更新使用语义版本控制。
有关文档,请参阅 Snowpark Python 开发者指南。
警告
由于 Python 3.8 已达到其 生命周期结束 (https://devguide.python.org/versions/) ,在 Python 3.8 中使用 snowpark-python 时将触发弃用警告。有关更多详细信息,请参阅 Snowflake Python 运行时支持。根据 Anaconda 的策略 (https://forum.anaconda.com/t/python-3-8-reaches-end-of-life/87265),Snowpark Python 1.24.0 将是支持 Python 3.8 的最后一个客户端和服务器版本。将现有 Python 3.8 对象升级到 Python 3.9 或更高版本。
版本 1.30.0(2025 年 3 月 27 日)¶
新功能¶
引入
relaxed_ordering
参数,从而添加了对:code:Dataframe.to_snowpark_pandas
中放宽的一致性和排序保证的支持。DataFrameReader.dbapi`(预览版)现在可接受:code:`session_init_statement
参数的字符串列表,允许在会话初始化期间执行多个 SQL 语句。
改进¶
相较于为
fractions
中的每个关键字创建 UNION ALL 子查询的旧方法,改进了:code:Dataframe.stat.sample_by
的查询生成,可生成单个平面查询,并能很好地通过大型fractions
字典进行扩展。设置session.conf.set("use_simplified_query_generation", True)
以启用此功能。在将 Parquet 文件复制到表中时启用矢量化选项,从而提高
DataFrameReader.dbapi
的性能。通过以下方式改进了
DataFrame.random_split
的查询生成。可以通过设置session.conf.set("use_simplified_query_generation", True)
来启用它们:无需在输入数据帧的内部实现中使用
cache_result
,从而实现了纯粹的惰性数据帧操作。seed
实参现在可在多次调用和会话中重复表现出预期行为。
在
include_decimal
设置为True
的情况下,DataFrame.fillna
和:code:DataFrame.replace
现在均支持将int
和float
纳入Decimal
列。在
files.py
中添加了以下 UDF 和存储过程函数的文档,因为它们已经正式发布。SnowflakeFile.write
SnowflakeFile.writelines
SnowflakeFile.writeable
对于
SnowflakeFile
和SnowflakeFile.open()
的文档进行了细微修改。
错误修复¶
修复了以下函数的一个会引发错误的错误。
.cast()
应用于其输出:from_json
size
Snowpark 本地测试更新¶
错误修复¶
修复了聚合中的一个错误,该错误会导致空组仍产生行。
修复了
Dataframe.except_
中的一个错误,该错误会导致不正确地删除行。修复了在对筛选出的行执行类型转换时导致
to_timestamp
失败的一个错误。
Snowpark pandas API 更新¶
新功能¶
在
Series.str.__getitem__
(Series.str[...]
) 中添加了对列表值的支持。在 GROUP BY 操作中添加了对
pd.Grouper
对象的支持。在指定freq
时,支持sort
、closed
、label
和convention
实参的默认值;如为start
或start_day
,则支持origin
。引入新参数
relaxed_ordering
,在pd.read_snowflake
中为指定数据源(例如表和视图)和查询数据源添加了对放宽的一致性和排序保证的支持。
改进¶
一旦发现设置了
QUOTED_IDENTIFIERS_IGNORE_CASE
,就会发出警告,要求用户将其取消设置。改进了在
index=True
时,对DataFrame.to_snowflake
和Series.to_snowflake
中缺失的index_label
的处理方式。索引列使用系统定义的标签,而不会引发ValueError
。改进了在函数名称不受支持时,
groupby
、DataFrame
或Series.agg
的错误消息。
Snowpark 本地测试更新¶
改进¶
一旦发现设置了
QUOTED_IDENTIFIERS_IGNORE_CASE
,就会发出警告,要求用户将其取消设置。改进了在
index=True
时,对DataFrame.to_snowflake
和Series.to_snowflake
中缺失的index_label
的处理方式。索引列使用系统定义的标签,而不会引发ValueError
。改进了在函数名称不受支持时,
groupby or DataFrame or Series.agg
的错误消息。
版本 1.29.1(2025 年 3 月 12 日)¶
错误修复¶
修复了 :code:`DataFrameReader.dbapi`(非公开预览版)中一个导致无法在存储过程和 Snowbooks 中使用的错误。
版本 1.29.0(2025 年 3 月 5 日)¶
新功能¶
在 :file:`functions.py`(非公开预览版)中添加了对以下 AI 功能的支持:
ai_filter
ai_agg
summarize_agg
在 :file:`functions.py`(非公开预览版)中添加了对新的 FILE SQL 类型的支持,以及以下相关函数:
fl_get_content_type
fl_get_etag
fl_get_file_type
fl_get_last_modified
fl_get_relative_path
fl_get_scoped_file_url
fl_get_size
fl_get_stage
fl_get_stage_file_url
fl_is_audio
fl_is_compressed
fl_is_document
fl_is_image
fl_is_video
添加了使用工件库(非公开预览版)从 PyPi 导入第三方包的支持:
在注册存储过程或用户定义的函数时,使用关键字实参
artifact_repository
和artifact_repository_packages
分别指定工件存储库和包。支持的 APIs 如下:
Session.sproc.register
Session.udf.register
Session.udaf.register
Session.udtf.register
functions.sproc
functions.udf
functions.udaf
functions.udtf
functions.pandas_udf
functions.pandas_udtf
改进¶
改进了注册存储过程时的版本验证警告,以确保
snowflake-snowpark-python
包的兼容性。现在,只有当主要版本或次要版本不匹配时才会触发警告,错误修复版本差异不会再生成警告。升级了 cloudpickle 的依赖项,使其除了支持以前的版本外,还支持
cloudpickle==3.0.0
。
错误修复¶
修复了以下错误:在禁用线程安全会话的情况下,创建包含大量值的数据帧时会引发
Unsupported feature 'SCOPED_TEMPORARY'.
错误。修复了以下错误:如果通过读取暂存文件创建了 DataFrame,且 CTE 优化已启用,则
df.describe
会引发内部 SQL 执行错误。修复了以下错误:使用
session.conf.set("use_simplified_query_generation", True)
启用简化查询生成时,df.order_by(A).select(B).distinct()
会生成无效的 SQL。
默认禁用简化查询生成。
Snowpark pandas API 更新¶
改进¶
改进了表不存在时的
pd.to_snowflake
、DataFrame.to_snowflake
和Series.to_snowflake
错误消息。改进了
pd.to_snowflake
、DataFrame.to_snowflake
和Series.to_snowflake
中if_exists
参数 docstring 的可读性。改进了所有使用 UDFs 与 Snowpark 对象的 pandas 函数的错误消息。
错误修复¶
修复了
Series.rename_axis
中的一个错误,该错误会引发AttributeError
。修复了
pd.get_dummies
默认不忽略 NULL/NaN 值的错误。修复了一个错误,即重复调用
pd.get_dummies
会导致“列名重复错误”。修复了
pd.get_dummies
中的一个错误,即传递列列表会在输出 DataFrame 中生成不正确的列标签。更新了
pd.get_dummies
,以返回 bool 值而非 int 值。
Snowpark 本地测试更新¶
新功能¶
在
range_between
窗口函数中添加了对字面量的支持。
版本 1.28.0(2025 年 2 月 20 日)¶
新功能¶
在
functions.py
中添加了对以下函数的支持normal
randn
向
Dataframe.union_by_name
和Dataframe.union_all_by_name
添加了对allow_missing_columns
参数的支持。
改进¶
改进了随机对象名称的生成,以避免冲突。
改进了
Dataframe.distinct
的查询生成,以生成 SELECT DISTINCT,而不必在执行 SELECT 时对所有列进行 GROUP BY。要禁用此功能,请设置session.conf.set("use_simplified_query_generation", False)
。
弃用¶
已弃用 Snowpark Python 函数
snowflake_cortex_summarize
。用户可以安装snowflake-ml-python
并改为使用:code:snowflake.cortex.summarize
函数。已弃用 Snowpark Python 函数
snowflake_cortex_sentiment
。用户可以安装snowflake-ml-python
并改为使用:code:snowflake.cortex.sentiment
函数。
错误修复¶
修复了以下错误:对于生成多个查询的 DataFrames,会话级查询标签会被堆栈跟踪覆盖。现在,只有在
session.conf.set("collect_stacktrace_in_query_tag", True)
的情况下,才会将查询标签设置为堆栈跟踪。修复了
Session._write_pandas
中的以下错误:在写入 Snowpark pandas 对象时,错误地将use_logical_type
参数传递给Session._write_modin_pandas_helper
。修复了选项 SQL 生成中的一个错误,该错误可能导致多个值的格式不正确。
修复了
Session.catalog
中的一个错误,该错误导致无法正确处理数据库或架构的空字符串,并生成错误的 SQL 语句。
实验功能¶
添加了将 pyarrow 表写入 Snowflake 表的支持。
Snowpark pandas API 更新¶
新功能¶
添加了对应用 Snowflake Cortex 函数
Summarize
和Sentiment
的支持。在
Series.str.get
中添加了对列表值的支持。
错误修复¶
修复了
apply
中的一个错误,该错误会导致 kwargs 无法正确传入应用的函数。
Snowpark 本地测试更新¶
新功能¶
- 添加了对以下函数的支持
hour
minute
向 CSV 读取器添加了对 NULL_IF 参数的支持。
添加了在加载 CSVs 时,对
date_format
、datetime_format
和timestamp_format
选项的支持。
错误修复¶
修复了
DataFrame.join
中的一个错误,该错误会导致列的类型设置不正确。修复了
when
语句中的一个错误,该错误会在otherwise
子句中导致不正确的结果。
版本 1.27.0(2025 年 2 月 5 日)¶
新功能¶
在 functions.py
中添加了对以下函数的支持:
array_reverse
divnull
map_cat
map_contains_key
map_keys
nullifzero
snowflake_cortex_sentiment
acosh
asinh
atanh
bit_length
bitmap_bit_position
bitmap_bucket_number
bitmap_construct_agg
cbrt
equal_null
from_json
ifnull
localtimestamp
max_by
min_by
nth_value
nvl
octet_length
position
regr_avgx
regr_avgy
regr_count
regr_intercept
regr_r2
regr_slope
regr_sxx
regr_sxy
regr_syy
try_to_binary
base64
base64_decode_string
base64_encode
editdistance
hex
hex_encode
instr
log1p
log2
log10
percentile_approx
unbase64
添加了在调用
DataFrame.create_dataframe
时,对指定架构字符串(包括隐式结构语法)的支持。添加了对
DataFrameWriter.insert_into/insertInto
的支持。此方法还支持本地测试模式。添加了对
DataFrame.create_temp_view
的支持,以创建临时视图。如果视图已经存在,则操作将会失败。在函数
map_cat
和map_concat
中添加了对多列的支持。添加了一个
keep_column_order
选项,用于在DataFrame.with_column
和DataFrame.with_columns
中保持原始列顺序。添加了列类型转换选项,允许在
StructType
列中重命名或添加字段。为
ArrayType
添加了对contains_null parameter
的支持。添加了以下支持:对通过从暂存区中读取文件创建的 DataFrame 执行:code:
DataFrame.create_or_replace_temp_view
,从而创建临时视图。向
MapType
添加了对value_contains_null
参数的支持。为遥测添加了交互能力,可指示当前环境是否为交互式环境。
允许原生应用程序中的
session.file.get
从当前版本读取以 / 开头的文件路径添加了在
DataFrame.pivot
之后使用多个聚合函数的支持。
实验功能¶
添加了
Session.catalog
类,用于管理 Snowflake 对象。可通过Session.catalog
访问。snowflake.core
是该功能需要的依赖项。
在读取暂存区中的 JSON 文件时,允许一个或多个用户输入架构。
添加了在调用
DataFrame.create_dataframe
时,对指定架构字符串(包括隐式结构语法)的支持。
改进¶
已更新
README.md
,以包括有关如何使用cosign
验证包签名的说明。
错误修复¶
修复了本地测试模式下的一个错误,该错误会导致列中应包含 0 时却包含 None。
修复了
StructField.from_json
中的一个错误,该错误导致无法正确解析带有tzinfo
的TimestampTypes
。修复了
function date_format
中的一个错误,该错误会在输入列为日期类型或时间戳类型时导致错误。修复了 DataFrame 中的一个错误,该错误允许在不可为 null 的列中插入 null 值。
修复了函数
replace
和lit
中的一个错误,该错误会在传递列表达式对象时引发类型提示断言错误。修复了
pandas_udf
和pandas_udtf
中会话参数被错误地忽略的错误。修复了一个错误,在通过
session.call
调用系统函数时,该错误会引发错误的类型转换。
Snowpark pandas API 更新¶
新功能¶
添加了对
Series.str.ljust
和Series.str.rjust
的支持。添加了对
Series.str.center
的支持。添加了对
Series.str.pad
的支持。添加了对应用 Snowpark Python 函数
snowflake_cortex_sentiment
的支持。添加了对
DataFrame.map
的支持。添加了对
DataFrame.from_dict
和DataFrame.from_records
的支持。添加了对结构类型列中混合大小写字段名的支持。
添加了对
SeriesGroupBy.unique
的支持添加了对
Series.dt.strftime
的支持,支持使用以下指令:%d:以零填充十进制数字形式表示的日期。
%m:以零填充十进制数字形式表示的月份。
%Y:以十进制数字形式表示世纪的年份。
%H:以零填充十进制数字形式表示的小时(24 小时制时钟)。
%M:以零填充十进制数字形式表示的分钟。
%S:以零填充十进制数字形式表示的秒钟。
%f:以零填充到 6 位的十进制数形式表示的微秒。
%j:以零填充十进制数字形式表示的一年当中的第几天。
%X:对于区域设置而言适当的时间表示法。
%%:“%”字面量字符。
添加了对
Series.between
的支持。在
DataFrameGroupBy.apply
中添加了对include_groups=False
的支持。在
Series.str.split
中添加了对expand=True
的支持。添加了对
DataFrame.pop
和Series.pop
的支持。在
DataFrameGroupBy.agg
和SeriesGroupBy.agg
中添加了对first
和last
的支持。添加了对
Index.drop_duplicates
的支持。在
pd.pivot_table()
、DataFrame.pivot_table()
和pd.crosstab()
中添加了对聚合"count"
、"median"
、np.median
、"skew"
、"std"
、np.std
"var"
和np.var
的支持。
改进¶
通过尽可能将 numpy 函数映射到 Snowpark 函数,提高了
DataFrame.map
、Series.apply
和Series.map
方法的性能。添加了
DataFrame.map
的文档。通过尽可能将 numpy 函数映射到 Snowpark 函数,提高了
DataFrame.apply
的性能。添加了有关 Snowpark Pandas 与 scikit-learn 之间的互操作性程度的文档。
如果未提供类型提示,则推断
Series.map
、Series.apply
和DataFrame.map
中函数的返回类型。为遥测添加了
call_count
,用于计算方法调用,包括交换协议调用。