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 Snowpark DataFrame reference of an internal DataFrameReference 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 and Session.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_ of TimestampType to match the actual subtype it represents.

  • Fixed a bug in DataFrameReader.dbapi that UDTF 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 to pip 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 of AttributeError on attempting to call Snowflake extension functions/methods to_dynamic_table(), cache_result(), to_view(), create_or_replace_dynamic_table(), and create_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 in functions.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 the Session.write_arrow() function.

  • DataFrame 分析器会添加有关每个查询的以下信息:describe query timeexecution timesql 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 the ignore_case option in the infer_schema_options was not respected.

  • 修复了一个错误,该问题曾导致当查询结果格式设置为 JSONARROW 时,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_datetimepd.to_timedelta 会意外引发 IndexError

  • 修复了一个错误,该问题曾导致若在执行任何潜在切换操作前调用 pd.explain_switch,会引发 IndexError 或返回 None

Version 1.36.0: August 5, 2025

新功能

  • Session.create_dataframe 现在接受关键字参数,这些参数会在从 pandas DataFrame 或 pyarrow 表创建 DataFrame 时,通过内部调用传递给 Session.write_pandasSession.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 using pd.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_CASTTrue,在加载数据时列会封装在 TRY_CAST 语句中,而非执行硬性转换。

  • DataFrameReaderINFER_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_excelSeries.to_excel 的支持。

  • 添加了对 pd.read_featherpd.read_orcpd.read_stata 的支持。

  • 添加了对 pd.explain_switch() 的支持,以返回有关混合执行决策的调试信息。

  • 当全局 modin 后端为 Pandas 时,支持 pd.read_snowflake

  • 添加了对 pd.to_dynamic_tablepd.to_icebergpd.to_view 的支持。

改进

  • 添加了对 API 调用和混合引擎切换的 modin 遥测。

  • modinpandas 版本不符合要求时,为 Snowflake 笔记本用户显示更有帮助的错误消息。

  • 在混合执行模式(非公开预览版)中,为成本函数新增了数据类型保护,用于检查数据类型兼容性。

  • 在混合执行模式(非公开预览版)中,对于许多未在 Pandas on Snowflake 中直接实现的方法,新增了自动切换到 Pandas 后端的功能。

  • 为 Pandas on Snowflake 遥测设置了 type 和其他标准字段。

依赖项更新

  • 添加了 tqdmipywidgets 作为依赖项,以便用户在 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.wherenumpy 操作会引发 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 的新实参,它会触发 stddevmean 来计算字符串列。

  • DataFrame.lineage.trace 中添加了对于从 DGQL 检索沿袭时检索 Edge.properties 的支持。

  • DataFrameWriter.save_as_table 中添加了一个 table_exists 参数,允许指定表是否已经存在。这允许跳过可能很昂贵的表查找。

错误修复

  • 修复了 DataFrameReader.dbapi`(非公开预览版)中 :code:`create_connection 定义为与多重处理不兼容的本地函数的错误。

  • 修复了 DataFrameReader.dbapi`(非公开预览版)中的一个错误,即 Databricks :code:`TIMESTAMP 类型被转换为 Snowflake TIMESTAMP_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_viewSeries.to_viewDataFrame.to_dynamic_tableSeries.to_dynamic_table,将 index 参数的默认值设置为 False

  • 为表创建函数添加了 iceberg_version 选项。

  • 减少了许多操作的查询次数,包括 insertreprgroupby,这些操作先前会发出查询,以检索输入数据的大小。

错误修复

  • 修复了 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 记录的支持。目前支持 PERMISSIVEDROPMALFORMEDFAILFAST

  • 改进了在文件中找不到指定 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.getSeries.str.sliceSeries.str.__getitem__ (Series.str[...]) 中字典值的支持。

  • 添加了对 DataFrame.to_html 的支持。

  • 添加了对 DataFrame.to_stringSeries.to_string 的支持。

  • 添加了对使用 pd.read_csv 从 S3 桶读取文件的支持。

改进

  • iceberg_config 设为 DataFrame.to_icebergSeries.to_iceberg 的必要参数。

版本 1.31.0(2025 年 4 月 24 日)

新功能

  • 添加了对 StoredProcedure.register():code:execute_as 实参的 restricted caller 权限的支持。

  • 添加了对 DataFrame.to_pandas() 中非 select 语句的支持。

  • Session.add_packagesSession.add_requirementsSession.get_packagesSession.remove_packageSession.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.getItemsnowpark.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_viewSeries.create_or_replace_view 的支持。

  • 添加了对 DataFrame.create_or_replace_dynamic_tableSeries.create_or_replace_dynamic_table 的支持。

  • 添加了对 DataFrame.to_viewSeries.to_view 的支持。

  • 添加了对 DataFrame.to_dynamic_tableSeries.to_dynamic_table 的支持。

  • DataFrame.groupby.resample 添加了对聚合 maxmeanmedianminsum 的支持。

  • 添加了对使用以下方式读取暂存区文件的支持:

    • pd.read_excel

    • pd.read_html

    • pd.read_pickle

    • pd.read_sas

    • pd.read_xml

  • 添加了对 DataFrame.to_icebergSeries.to_iceberg 的支持。

  • 添加了对 Series.str.len 中字典值的支持。

改进

  • 通过避免昂贵的透视步骤来提高 DataFrame.groupby.applySeries.groupby.apply 的性能。

  • OrderedDataFrame 增加了行数上限的估计值,以更好地切换引擎。这可能会导致查询次数增加。

  • enforce_ordering 中的 relaxed_ordering 参数重命名为 pd.read_snowflake。此外,新的默认值为 enforce_ordering=False,与先前的默认值 relaxed_ordering=False 具有相反的效果。

错误修复

  • 修复了读取 Iceberg 表和 enforce_ordering=Truepd.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 现在均支持将 intfloat 纳入 Decimal 列。

  • files.py 中添加了以下 UDF 和存储过程函数的文档,因为它们已经正式发布。

    • SnowflakeFile.write

    • SnowflakeFile.writelines

    • SnowflakeFile.writeable

  • 对于 SnowflakeFileSnowflakeFile.open() 的文档进行了细微修改。

错误修复

  • 修复了以下函数的一个会引发错误的错误。.cast() 应用于其输出:

    • from_json

    • size

Snowpark 本地测试更新

错误修复

  • 修复了聚合中的一个错误,该错误会导致空组仍产生行。

  • 修复了 Dataframe.except_ 中的一个错误,该错误会导致不正确地删除行。

  • 修复了在对筛选出的行执行类型转换时导致 to_timestamp 失败的一个错误。

Snowpark pandas API 更新

新功能

  • Series.str.__getitem__ (Series.str[...]) 中添加了对列表值的支持。

  • 在 GROUP BY 操作中添加了对 pd.Grouper 对象的支持。在指定 freq 时,支持 sortclosedlabelconvention 实参的默认值;如为 startstart_day,则支持 origin

  • 引入新参数 relaxed_ordering,在 pd.read_snowflake 中为指定数据源(例如表和视图)和查询数据源添加了对放宽的一致性和排序保证的支持。

改进

  • 一旦发现设置了 QUOTED_IDENTIFIERS_IGNORE_CASE,就会发出警告,要求用户将其取消设置。

  • 改进了在 index=True 时,对 DataFrame.to_snowflakeSeries.to_snowflake 中缺失的 index_label 的处理方式。索引列使用系统定义的标签,而不会引发 ValueError

  • 改进了在函数名称不受支持时,groupbyDataFrameSeries.agg 的错误消息。

Snowpark 本地测试更新

改进

  • 一旦发现设置了 QUOTED_IDENTIFIERS_IGNORE_CASE,就会发出警告,要求用户将其取消设置。

  • 改进了在 index=True 时,对 DataFrame.to_snowflakeSeries.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_repositorypackages 分别指定工件存储库和包。

    • 支持的 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_snowflakeDataFrame.to_snowflakeSeries.to_snowflake 错误消息。

  • 改进了 pd.to_snowflakeDataFrame.to_snowflakeSeries.to_snowflakeif_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_nameDataframe.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 函数 SummarizeSentiment 的支持。

  • Series.str.get 中添加了对列表值的支持。

错误修复

  • 修复了 apply 中的一个错误,该错误会导致 kwargs 无法正确传入应用的函数。

Snowpark 本地测试更新

新功能

  • 添加了对以下函数的支持
    • hour

    • minute

  • 向 CSV 读取器添加了对 NULL_IF 参数的支持。

  • 添加了在加载 CSVs 时,对 date_formatdatetime_formattimestamp_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_catmap_concat 中添加了对多列的支持。

  • 添加了一个 keep_column_order 选项,用于在 DataFrame.with_columnDataFrame.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 中的一个错误,该错误导致无法正确解析带有 tzinfoTimestampTypes

  • 修复了 function date_format 中的一个错误,该错误会在输入列为日期类型或时间戳类型时导致错误。

  • 修复了 DataFrame 中的一个错误,该错误允许在不可为 null 的列中插入 null 值。

  • 修复了函数 replacelit 中的一个错误,该错误会在传递列表达式对象时引发类型提示断言错误。

  • 修复了 pandas_udfpandas_udtf 中会话参数被错误地忽略的错误。

  • 修复了一个错误,在通过 session.call 调用系统函数时,该错误会引发错误的类型转换。

Snowpark pandas API 更新

新功能

  • 添加了对 Series.str.ljustSeries.str.rjust 的支持。

  • 添加了对 Series.str.center 的支持。

  • 添加了对 Series.str.pad 的支持。

  • 添加了对应用 Snowpark Python 函数 snowflake_cortex_sentiment 的支持。

  • 添加了对 DataFrame.map 的支持。

  • 添加了对 DataFrame.from_dictDataFrame.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.popSeries.pop 的支持。

  • DataFrameGroupBy.aggSeriesGroupBy.agg 中添加了对 firstlast 的支持。

  • 添加了对 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.mapSeries.applySeries.map 方法的性能。

  • 添加了 DataFrame.map 的文档。

  • 通过尽可能将 numpy 函数映射到 Snowpark 函数,提高了 DataFrame.apply 的性能。

  • 添加了有关 Snowpark Pandas 与 scikit-learn 之间的互操作性程度的文档。

  • 如果未提供类型提示,则推断 Series.mapSeries.applyDataFrame.map 中函数的返回类型。

  • 为遥测添加了 call_count,用于计算方法调用,包括交换协议调用。

语言: 中文