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 或更新版本。
Version 1.39.0: September 17, 2025¶
新功能¶
Downgraded to level
logging.DEBUG - 1
the log message saying that the SnowparkDataFrame
reference of an internalDataFrameReference
object has changed.Eliminate duplicate parameter check queries for casing status when retrieving the session.
Retrieve DataFrame row counts through object metadata to avoid a COUNT(*) query (performance)
Added support for applying the Snowflake Cortex function
Complete
.Introduce faster pandas: Improved performance by deferring row position computation.
The following operations are currently supported and can benefit from the optimization:
read_snowflake
,repr
,loc
,reset_index
,merge
, and binary operations.If a lazy object (e.g., DataFrame or Series) depends on a mix of supported and unsupported operations, the optimization will not be used.
Updated the error message for when Snowpark pandas is referenced within
apply
.Added a session parameter
dummy_row_pos_optimization_enabled
to enable/disable dummy row position optimization in faster pandas.
依赖项更新¶
Updated the supported
modin
versions to >=0.35.0 and <0.37.0 (was previously >= 0.34.0 and <0.36.0).
错误修复¶
Fixed an issue with
drop_duplicates
where the same data source could be read multiple times in the same query but in a different order each time, resulting in missing rows in the final result. The fix ensures that the data source is read only once.Fixed a bug with hybrid execution mode where an
AssertionError
was unexpectedly raised by certain indexing operations.
Snowpark 本地测试更新¶
新功能¶
Added support to allow patching
functions.ai_complete
.
Version 1.38.0: September 4, 2025¶
新功能¶
在
functions.py
中添加了对以下 AI 驱动的功能的支持:ai_extract
ai_parse_document
ai_transcribe
Added time travel support for querying historical data:
Session.table()
now supports time travel parameters:time_travel_mode
statement
offset
timestamp
timestamp_type
stream
DataFrameReader.table()
supports the same time travel parameters as direct arguments.DataFrameReader
supports time travel via option chaining (e.g.,session.read.option("time_travel_mode", "at").option("offset", -60).table("my_table")
).
Added support for specifying the following parameters to
DataFrameWriter.copy_into_location
for validation and writing data to external locations:validation_mode
storage_integration
credentials
encryption
Added support for
Session.directory
andSession.read.directory
to retrieve the list of all files on a stage with metadata.Added support for
DataFrameReader.jdbc(Private Preview)
that allows the JDBC driver to ingest external data sources.Added support for
FileOperation.copy_files
to copy files from a source location to an output stage.Added support for the following scalar functions in
functions.py
:all_user_names
bitand
bitand_agg
bitor
bitor_agg
bitxor
bitxor_agg
current_account_name
current_client
current_ip_address
current_role_type
current_organization_name
current_organization_user
current_secondary_roles
current_transaction
getbit
错误修复¶
Fixed the
_repr_
ofTimestampType
to match the actual subtype it represents.Fixed a bug in
DataFrameReader.dbapi
thatUDTF
ingestion does not work in stored procedures.Fixed a bug in schema inference that caused incorrect stage prefixes to be used.
改进¶
Enhanced error handling in
DataFrameReader.dbapi
thread-based ingestion to prevent unnecessary operations, which improves resource efficiency.Bumped cloudpickle dependency to also support
cloudpickle==3.1.1
in addition to previous versions.Improved
DataFrameReader.dbapi
(Public Preview) ingestion performance for PostgreSQL and MySQL by using a server-side cursor to fetch data.
Snowpark Pandas API 更新¶
新功能¶
Completed support for the following functions on the "Pandas" and "Ray" backends:
pd.read_snowflake()
pd.to_iceberg()
pd.to_pandas()
pd.to_snowpark()
pd.to_snowflake()
DataFrame.to_iceberg()
DataFrame.to_pandas()
DataFrame.to_snowpark()
DataFrame.to_snowflake()
Series.to_iceberg()
Series.to_pandas()
Series.to_snowpark()
Series.to_snowflake()
on the "Pandas" and "Ray" backends. Previously, only some of these functions and methods were supported on the Pandas backend.
Added support for
Index.get_level_values()
.
改进¶
Set the default transfer limit in hybrid execution for data leaving Snowflake to 100k, which can be overridden with the
SnowflakePandasTransferThreshold
environment variable. This configuration is appropriate for scenarios with two available engines, "pandas" and "Snowflake," on relational workloads.Improved the import error message by adding
--upgrade
topip install "snowflake-snowpark-python[modin]"
in the message.Reduced the telemetry messages from the modin client by pre-aggregating into five-second windows and only keeping a narrow band of metrics that are useful for tracking hybrid execution and native pandas performance.
Set the initial row count only when hybrid execution is enabled, which reduces the number of queries issued for many workloads.
Added a new test parameter for integration tests to enable hybrid execution.
错误修复¶
Raised
NotImplementedError
instead ofAttributeError
on attempting to call Snowflake extension functions/methodsto_dynamic_table()
,cache_result()
,to_view()
,create_or_replace_dynamic_table()
, andcreate_or_replace_view()
on DataFrames or series using the pandas or ray backends.
Version 1.37.0: August 18, 2025¶
新功能¶
Added support for the following
xpath
functions infunctions.py
:xpath
xpath_string
xpath_boolean
xpath_int
xpath_float
xpath_double
xpath_long
xpath_short
Added support for the
use_vectorized_scanner
parameter in theSession.write_arrow()
function.DataFrame 分析器会添加有关每个查询的以下信息:
describe query time
、execution time
和sql query text
。要查看此信息,请调用session.dataframe_profiler.enable()
并在 DataFrame 上调用:code:get_execution_profile
。Added support for
DataFrame.col_ilike
.增加了对返回
AsyncJob
对象的非阻塞存储过程调用的支持。将
block: bool = True
参数添加到Session.call()
。当block=False
时,返回AsyncJob
,而不是阻塞,直至完成。向
StoredProcedure.__call__()
添加了block: bool = True
参数,以支持命名和匿名存储过程的异步操作。添加了等同于
Session.call(block=False)
的Session.call_nowait()
。
错误修复¶
修复了 CTE 优化阶段的错误,该问题曾导致在使用
session.create_dataframe()
处理大输入数据本地创建 DataFrame 时,deepcopy
内部计划会引发内存激增。Fixed a bug in
DataFrameReader.parquet
where theignore_case
option in theinfer_schema_options
was not respected.修复了一个错误,该问题曾导致当查询结果格式设置为
JSON
和ARROW
时,to_pandas()
的列名格式不一致。
弃用¶
弃用了
pkg_resources
。
依赖项更新¶
添加了对
protobuf<6.32
的依赖
Snowpark Pandas API 更新¶
新功能¶
新增支持通过
DataFrame.set_backend
方法在 Snowflake 和 <Ray (https://www.ray.io/) 之间高效传输数据。modin
的安装版本必须至少为 0.35.0,并且必须安装ray
。
依赖项更新¶
Updated the supported modin versions to >=0.34.0 and <0.36.0 (was previously >= 0.33.0 and <0.35.0).
当安装的 modin 版本为 0.35.0 或更高时,新增对 pandas 2.3 的支持。
错误修复¶
修复了混合执行模式(私有预览版)中的一个问题,该问题曾导致
pd.to_datetime
和pd.to_timedelta
会意外引发IndexError
。修复了一个错误,该问题曾导致若在执行任何潜在切换操作前调用
pd.explain_switch
,会引发IndexError
或返回None
。
Version 1.36.0: August 5, 2025¶
新功能¶
Session.create_dataframe
现在接受关键字参数,这些参数会在从 pandas DataFrame 或pyarrow
表创建 DataFrame 时,通过内部调用传递给Session.write_pandas
或Session.write_arrow
。为 AsyncJob 添加了新的 APIs:
AsyncJob.is_failed()
返回一个表示任务是否失败的布尔值。可以与AsyncJob.is_done()
结合使用来确定作业是否已完成和出错。AsyncJob.status()
返回代表当前查询状态的字符串(例如,“RUNNING”、“SUCCESS”、“FAILED_WITH_ERROR”),以便在不调用result()
的情况下进行详细监控。
添加了 DataFrame 分析器。要使用,您可对所需的 DataFrame 调用
get_execution_profile()
。该分析器报告为评估 DataFrame 而执行的查询以及各查询运算符的统计信息。目前是一项实验性功能。在
functions.py
中添加了对以下函数的支持:ai_sentiment
更新了
context.configure_development_features
实验功能的界面。默认情况下,除非用户明确启用,否则所有开发功能均处于禁用状态。
改进¶
混合执行模式的行估算改进及急切调用减少。
新增一个配置变量,用于控制混合执行模式下从 Snowflake 传出的数据转移成本。
新增支持通过传递
snowflake_udf_params
关键字参数,使用 DataFrame/Series/GroupBy.apply、map 和 transform 创建永久且不可变的 UDFs/UDTFs。Added support for
mapping np.unique
to DataFrame and Series inputs usingpd.unique
.
错误修复¶
修复了一个问题,该问题曾导致 Snowpark pandas 插件会无条件禁用
AutoSwitchBackend
,即使用户已通过编程或环境变量明确配置过该功能。
版本 1.35.0:2025 年 7 月 24 日¶
新功能¶
在
functions.py
中添加了对以下函数的支持:ai_embed
try_parse_json
改进¶
改进了
DataFrameReader.dbapi`(非公开预览版)中的 :code:`query
参数,因此无需在查询前后加括号。改进了在 :code:`DataFrameReader.dbapi`(非公开预览版)中推理目标数据源架构时引发异常的错误体验。
错误修复¶
修复了
DataFrameReader.dbapi`(非公开预览版)中的以下错误:在 Python 存储过程中会导致 :code:`dbapi
失败,并显示进程退出代码 1。修复了
DataFrameReader.dbapi`(非公开预览版)中 :code:`custom_schema
接受非法架构的错误。修复了
DataFrameReader.dbapi`(非公开预览版)中的一个错误,即:code:`custom_schema
在连接到 Postgres 和 MySQL 时无法正常工作。修复了架构推理中导致外部暂存区失败的错误。
Snowpark 本地测试更新¶
新功能¶
增加了对使用
SnowflakeFile
读取文件的本地测试支持。测试支持使用本地文件路径、Snow URL 语义 (snow://...
)、本地测试框架暂存区和 Snowflake 暂存区 (@stage/file_path
)。
版本 1.34.0:2025 年 7 月 14 日¶
新功能¶
向
DataFrameReader
添加了新选项TRY_CAST
。如果TRY_CAST
为True
,在加载数据时列会封装在TRY_CAST
语句中,而非执行硬性转换。在
DataFrameReader
的INFER_SCHEMA_OPTIONS
中添加了一个新选项USE_RELAXED_TYPES
。当设置为True
时,该选项会将所有字符串转换为最大长度字符串,并将所有数值类型转换为DoubleType
。新增了可调试性改进,以主动验证 DataFrame 模式元数据。可通过
snowflake.snowpark.context.configure_development_features()
启用。添加了一个新函数:code:
snowflake.snowpark.dataframe.map_in_pandas
,允许用户在数据帧上映射函数。映射函数以 Pandas DataFrames 的迭代器作为输入,并提供一个 pandas DataFrame 作为输出。添加了
ttl cache
来描述查询。在 15 秒间隔内重复的查询会使用缓存值,而非重新向 Snowflake 发出查询。向
DataFrameReader.dbapi
(PrPr) 添加了一个fetch_with_process
参数,用于启用多重处理,以支持本地引入中的数据提取。默认情况下,本地引入使用多线程。多重处理可以提高 Parquet 文件生成等受 CPU 限制的任务的性能。添加了新函数
snowflake.snowpark.functions.model
,允许用户调用模型的方法。
改进¶
添加了对使用 XSD 架构进行行验证的支持,在使用
rowTag
选项读取带行标签的 XML 文件时,可利用rowValidationXSDPath
选项实现。改进了
session.table().sample()
的 SQL 生成,以生成扁平化的 SQL 语句。添加了支持,
functions.explode
现可将复杂列表达式作为输入。添加了可调试性改进,以显示 SQL 编译错误对应于哪些 Python 行。使用
snowflake.snowpark.context.configure_development_features()
启用。此功能还依赖于在会话中启用的 AST 集合,可以使用session.ast_enabled = True
来实现。从包含 DML/DDL 查询的 Snowpark DataFrame 调用
to_snowpark_pandas():code:
时,设置enforce_ordering=True
,而非抛出NotImplementedError
。
错误修复¶
修复了创建 Iceberg 表时因冗余验证导致的错误。
修复了 :code:`DataFrameReader.dbapi`(非公开预览版)中的一个错误,即关闭游标或连接可能会意外引发错误并终止程序。
修复了在
DataFrame.select()
中使用表函数时,输出列与输入 DataFrame 的列匹配导致列名歧义的错误。当 DataFrame 列作为Column
对象提供时,此项改进会发挥作用。修复了 DecimalTypes 列中存在 NULL 时,会将该列转换为 FloatTypes 并导致精度损失的错误。
Snowpark 本地测试更新¶
修复了处理窗口函数时导致结果索引不正确的错误。
将标量数字传递给
fillna
时,Snowflake 将忽略非数字列,而非产生错误。
Snowpark Pandas API 更新¶
新功能¶
添加了对
DataFrame.to_excel
和Series.to_excel
的支持。添加了对
pd.read_feather
、pd.read_orc
和pd.read_stata
的支持。添加了对
pd.explain_switch()
的支持,以返回有关混合执行决策的调试信息。当全局 modin 后端为
Pandas
时,支持pd.read_snowflake
。添加了对
pd.to_dynamic_table
、pd.to_iceberg
和pd.to_view
的支持。
改进¶
添加了对 API 调用和混合引擎切换的 modin 遥测。
当
modin
或pandas
版本不符合要求时,为 Snowflake 笔记本用户显示更有帮助的错误消息。在混合执行模式(非公开预览版)中,为成本函数新增了数据类型保护,用于检查数据类型兼容性。
在混合执行模式(非公开预览版)中,对于许多未在 Pandas on Snowflake 中直接实现的方法,新增了自动切换到 Pandas 后端的功能。
为 Pandas on Snowflake 遥测设置了
type
和其他标准字段。
依赖项更新¶
添加了
tqdm
和ipywidgets
作为依赖项,以便用户在 modin 后端之间切换时可查看进度条。将支持的
modin
版本更新为 >=0.33.0 和 <0.35.0 (was previously >= 0.32.0 和 <0.34.0)。
错误修复¶
修复了混合执行模式(非公开预览版)中的一个错误,即某些序列操作会引发
TypeError: numpy.ndarray object is not callable
。修复了混合执行模式(非公开预览版)中的一个错误,即在 Pandas 后端对 modin 对象调用
np.where
等numpy
操作会引发AttributeError
。此修复需要modin
版本 0.34.0 或更高版本。修复了
df.melt
中的一个问题,此问题会导致值应用额外的后缀。
版本 1.33.0(2025 年 6 月 19 日)¶
新功能¶
在 :code:`DataFrameWriter.dbapi`(非公开预览版)中添加了对 MySQL 的支持,用于 Parquet 和基于 UDTF 的引入。
在 :code:`DataFrameReader.dbapi`(非公开预览版)中添加了对 PostgreSQL 的支持,用于 Parquet 和基于 UDTF 的引入。
在 :code:`DataFrameWriter.dbapi`(非公开预览版)中添加了对 Databricks 的支持,用于基于 UDTF 的引入,同时与其他对 Databricks 支持的提及进行了整合。
添加了对
DataFrameReader
的支持,支持在启用INFER_SCHEMA
的情况下读取文件时使用PATTERN
。在
functions.py
中添加了对以下 AI 驱动的功能的支持:ai_complete
ai_similarity
ai_summarize_agg`(原为 :code:`summarize_agg
)ai_classify
的不同配置选项
添加了使用
rowTag
选项读取带有行标签的 XML 文件时对更多选项的支持:添加了对使用
ignoreNamespace
选项从列名中移除命名空间前缀的支持。添加了对使用
attributePrefix
选项在结果表中为属性列指定前缀的支持。添加了对使用
excludeAttributes
选项从 XML 元素中排除属性的支持。添加了当一个没有子元素的元素中包含属性时,使用
valueTag
选项为其值指定列名的支持。添加了使用
nullValue
选项,指定要视为 null 的值的支持。添加了对使用
charset
选项指定 XML 文件的字符编码的支持。添加了对使用
ignoreSurroundingWhitespace
选项忽略 XML 元素中周围空白的支持。
在
Session.call
中添加了对参数return_dataframe
的支持,可用于将函数的返回类型设置为DataFrame
对象。向
Dataframe.describe
添加了一个名为strings_include_math_stats
的新实参,它会触发stddev
和mean
来计算字符串列。在
DataFrame.lineage.trace
中添加了对于从DGQL
检索沿袭时检索Edge.properties
的支持。向
DataFrameWriter.save_as_table
中添加了一个table_exists
参数,允许指定表是否已经存在。这允许跳过可能很昂贵的表查找。
错误修复¶
修复了
DataFrameReader.dbapi`(非公开预览版)中 :code:`create_connection
定义为与多重处理不兼容的本地函数的错误。修复了
DataFrameReader.dbapi`(非公开预览版)中的一个错误,即 Databricks :code:`TIMESTAMP
类型被转换为 SnowflakeTIMESTAMP_NTZ
类型,但本应是TIMESTAMP_LTZ
类型。修复了
DataFrameReader.json
中的一个错误,该错误使用同一读取器对象重复读取,导致生成错误引用的列。修复了
DataFrame.to_pandas()
中的一个错误,该错误在转换并非源自 select 语句的 DataFrame 时会删除列名。修复了一个错误,即当 DataFrame 包含 UDTF 且 UDTF 中的
SELECT *
未被正确解析时,DataFrame.create_or_replace_dynamic_table
会引发错误。修复了无法在函数的 values 子句中使用强制类型转换列的错误。
改进¶
改进了输入 Pandas DataFrame 没有列时,
Session.create_dataframe()
和Session.write_pandas()
的错误消息。改进了
DataFrame.select
,使其能更好地处理实参包含一个表函数时,其输出列与当前 DataFrame 的列发生冲突的情况。通过这项改进,如果用户在df.select("col1", "col2", table_func(...))
中提供非冲突列作为字符串实参,Snowpark 客户端生成的查询不会引发不明确的列错误。改进了 :code:`DataFrameReader.dbapi`(非公开预览版),支持使用基于内存中的 Parquet 引入,以提高性能和安全性。
改进了
DataFrameReader.dbapi`(非公开预览版),支持在复制到表的操作中使用 :code:`MATCH_BY_COLUMN_NAME=CASE_SENSITIVE
。
Snowpark 本地测试更新¶
新功能¶
在本地文件测试中添加了对 Snow URLs (
snow://
) 的支持。
错误修复¶
修复了
Column.isin
中会导致对已联接或先前筛选的数据进行错误筛选的错误。修复了
snowflake.snowpark.functions.concat_ws
中的一个错误,该错误会导致结果使用不正确的索引。
Snowpark Pandas API 更新¶
依赖项更新¶
将
modin
依赖项约束从 0.32.0 更新为 >=0.32.0、<0.34.0。使用 Snowpark Pandas 测试的最新版本为modin
0.33.1。
新功能¶
添加了对 混合执行(非公开预览版) 的支持。通过运行
from modin.config import AutoSwitchBackend; AutoSwitchBackend.enable()
,Pandas on Snowflake 会自动选择是在本地还是在 Snowflake 上运行特定的 Pandas 操作。此功能默认禁用。
改进¶
对于
DataFrame.to_view
、Series.to_view
、DataFrame.to_dynamic_table
和Series.to_dynamic_table
,将index
参数的默认值设置为False
。为表创建函数添加了
iceberg_version
选项。减少了许多操作的查询次数,包括
insert
、repr
和groupby
,这些操作先前会发出查询,以检索输入数据的大小。
错误修复¶
修复了
Series.where
中的一个错误,即当other
为未命名的Series
时会出现问题。
版本 1.32.0(2025 年 5 月 15 日)¶
改进¶
调用 Snowflake 系统过程不会执行额外的
describe procedure
调用来检查该过程的返回类型。增加了对
Session.create_dataframe()`(使用暂存区 URL 和 :code:`FILE
数据类型)的支持。增加了在使用
session.read.option('mode', <mode>), option('rowTag', <tag_name>).xml(<stage_file_path>)
读取 XML 文件时,通过不同模式处理损坏的 XML 记录的支持。目前支持PERMISSIVE
、DROPMALFORMED
和FAILFAST
。改进了在文件中找不到指定
ROWTAG
内容时,XML 读取器的错误消息。改进了查询生成,使
Dataframe.drop
使用SELECT * EXCLUDE ()
排除已删除列。设置session.conf.set("use_simplified_query_generation", True)
以启用此功能。为
StructType.from_json
添加了对VariantType
的支持。
错误修复¶
修复了 :code:`DataFrameWriter.dbapi`(非公开预览版)中的一个错误,该错误导致外部数据库中的 unicode 或置于双引号之间的列名因引号不正确而导致错误。
修复了嵌套
OBJECT
数据中的命名字段在包含空格时可能导致错误的错误。
Snowpark 本地测试更新¶
错误修复¶
修复了
snowflake.snowpark.functions.rank
不遵守排序方向的错误。修复了
snowflake.snowpark.functions.to_timestamp_*
中会导致筛选数据结果不正确的错误。
Snowpark Pandas API 更新¶
新功能¶
添加了对
Series.str.get
、Series.str.slice
和Series.str.__getitem__
(Series.str[...]
) 中字典值的支持。添加了对
DataFrame.to_html
的支持。添加了对
DataFrame.to_string
和Series.to_string
的支持。添加了对使用
pd.read_csv
从 S3 桶读取文件的支持。
改进¶
将
iceberg_config
设为DataFrame.to_iceberg
和Series.to_iceberg
的必要参数。
版本 1.31.0(2025 年 4 月 24 日)¶
新功能¶
添加了对
StoredProcedure.register():code:
中execute_as
实参的restricted caller
权限的支持。添加了对
DataFrame.to_pandas()
中非 select 语句的支持。为
Session.add_packages
、Session.add_requirements
、Session.get_packages
、Session.remove_package
和Session.clear_packages
添加了对artifact_repository
参数的支持。添加了通过 :code:`session.read.option('rowTag', <tag_name>).xml(<stage_file_path>)`(实验性)使用行标记读取 XML 文件的支持。
每条 XML 记录都作为单独的行提取。
该记录中的每个字段都成为一个单独的
VARIANT
类型列,可以使用点表示法进一步查询,例如col(a.b.c)
。
添加了对
DataFrameReader.dbapi
(PrPr) 的更新:添加了通过将多个提取的数据合并到单个 Parquet 文件中来优化性能的
fetch_merge_count
参数。添加了对 Databricks 的支持。
添加了对使用 Snowflake UDTF 进行引入的支持。
在 :code:`functions.py`(非公开预览版)中添加了对以下 AI 功能的支持:
prompt
ai_filter`(添加了对 :code:`prompt()
函数和镜像文件的支持,并将第二个实参名称从expr
更改为file
)ai_classify
改进¶
针对
DataFrame.to_snowpark_pandas
,将relaxed_ordering
参数重命名为enforce_ordering
。此外,新的默认值为enforce_ordering=False
,与先前的默认值relaxed_ordering=False
具有相反的效果。通过将默认
fetch_size
参数值设置为 1000,提高了DataFrameReader.dbapi
(PrPr) 读取性能。通过建议可能匹配的标识符,改进无效标识符 SQL 错误的错误消息。
减少了使用
session.table
从 Snowflake 表创建 DataFrame 时发出的描述查询的数量。提高了
DataFrameAnalyticsFunctions.time_series_agg()
的性能和准确性。
错误修复¶
修复了数据透视列和汇总列相同时,
DataFrame.group_by().pivot().agg
中的一个错误。修复了
DataFrameReader.dbapi
(PrPr) 中的一个错误,即create_connection
返回不支持的驱动程序类型的连接对象时会引发TypeError
。修复了
df.limit(0)
调用无法正常应用的错误。修复了
DataFrameWriter.save_as_table
中使用追加模式时导致保留名称引发错误的错误。
弃用¶
已弃用对 Python3.8 的支持。
在
DataFrameAnalyticsFunctions.time_series_agg()
中已弃用sliding_interval
实参。
Snowpark 本地测试更新¶
新功能¶
为
Window.range_between
添加了对间隔表达式的支持。添加了对
array_construct
函数的支持。
错误修复¶
修复了本地测试中的一个错误,即在通过导入执行存储过程期间,无意中复制临时
__pycache__
目录。修复了本地测试中导致
Column.like
调用结果不正确的错误。修复了本地测试中导致
Column.getItem
和snowpark.snowflake.functions.get
引发IndexError
而非返回null
的错误。修复了本地测试中
df.limit(0)
调用无法正常应用的错误。修复了本地测试中执行
Table.merge
时合并到空表会导致异常的错误。
Snowpark pandas API 更新¶
依赖项更新¶
将
modin
从 0.30.1 更新到了 0.32.0。添加了对
numpy
2.0 及更高版本的支持。
新功能¶
添加了对
DataFrame.create_or_replace_view
和Series.create_or_replace_view
的支持。添加了对
DataFrame.create_or_replace_dynamic_table
和Series.create_or_replace_dynamic_table
的支持。添加了对
DataFrame.to_view
和Series.to_view
的支持。添加了对
DataFrame.to_dynamic_table
和Series.to_dynamic_table
的支持。为
DataFrame.groupby.resample
添加了对聚合max
、mean
、median
、min
和sum
的支持。添加了对使用以下方式读取暂存区文件的支持:
pd.read_excel
pd.read_html
pd.read_pickle
pd.read_sas
pd.read_xml
添加了对
DataFrame.to_iceberg
和Series.to_iceberg
的支持。添加了对
Series.str.len
中字典值的支持。
改进¶
通过避免昂贵的透视步骤来提高
DataFrame.groupby.apply
和Series.groupby.apply
的性能。为
OrderedDataFrame
增加了行数上限的估计值,以更好地切换引擎。这可能会导致查询次数增加。将
enforce_ordering
中的relaxed_ordering
参数重命名为pd.read_snowflake
。此外,新的默认值为enforce_ordering=False
,与先前的默认值relaxed_ordering=False
具有相反的效果。
错误修复¶
修复了读取 Iceberg 表和
enforce_ordering=True
时pd.read_snowflake
的错误。
版本 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
和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
,用于计算方法调用,包括交换协议调用。