2024 年 Snowpark Library for Python 版本说明

本文包含 Snowpark Library for Python 的版本说明,包括以下内容(如果适用):

  • 行为变更

  • 新功能

  • 面向客户的错误修复

Snowflake 对 Snowpark Library for Python 更新使用语义版本控制。

有关文档,请参阅 Snowpark Python 开发者指南

版本 1.25.0(2024 年 11 月 13 日)

新功能

  • snowflake.snowpark.dataframe 中添加了以下新函数:

    • map

改进

  • 如果分析器中未设置目标暂存区,则使用 Session.get_session_stage 中的默认暂存区,而不是引发 SnowparkSQLException

  • 在调用 Session.stored_procedure_profiler.set_active_profiler 时允许小写或混合大小写输入。

  • DataFrame 中为操作函数添加了使用开放式遥测 APIs 的分布式跟踪:

    • cache_result

  • 从日志记录中移除了 opentelemetry 警告。

错误修复

  • 修复了在 select 中使用 In 表达式时操作前和操作后查询的传播问题。

  • 修复了在禁用 Session.stored_procedure_profiler 后调用 Session.stored_procedure_profiler.get_output 时引发错误 AttributeError 的漏洞。

依赖项更新

  • 在运行时添加了 protobuf>=5.28tzlocal 的依赖项。

  • 为开发配置文件添加了 protoc-wheel-0 的依赖项。

  • 需要 snowflake-connector-python>=3.12.0, <4.0.0 (was >=3.10.0)。

Snowpark pandas API 更新

新功能

  • 添加了对 Index.to_numpy 的支持。

  • axis=0 添加了对 DataFrame.alignSeries.align 的支持。

  • 添加了对 snowflake.snowpark.functions.window 的支持

  • 添加了对 :code:`pd.read_pickle`(使用原生 Pandas 进行处理)的支持。

  • 添加了对 :code:`pd.read_html`(使用原生 Pandas 进行处理)的支持。

  • 添加了对 :code:`pd.read_xml`(使用原生 Pandas 进行处理)的支持。

  • GroupBy.aggregateDataFrame.aggregateSeries.aggregate 中添加了对聚合函数 "size"len 的支持。

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

错误修复

  • 修复了以下错误:使用单个可调用函数(例如 pd.DataFrame([0]).agg(np.mean))聚合单列数据帧时无法调换结果。

  • 修复了 DataFrame.dropna() 会执行以下操作的错误:

    • 将空白 subset`(例如 :code:`[])视为它指定了所有列,而不是没有列。

    • 为标量 subset 引发 TypeError,而不是仅对该列进行筛选。

    • 为类型 pandas.Indexsubset 引发 ValueError,而不是对索引中的列进行筛选。

  • 在笔记本环境中使用动态透视表,创建限定范围的只读表以减少 TableNotFoundError

  • 修复了以下错误:当 axis = 1 时,concat 数据帧或 series 对象来自同一个数据帧。

改进

  • 通过消除不必要的联接和临时表创建,使用标量 x 值改进 np.where

  • 使用联接展平透视,从而提高 get_dummies 性能。

Snowpark 本地测试更新

新功能

  • 添加了以下支持:修补 snowflake.snowpark.functions 模块中不可用的函数。

  • 添加了对 snowflake.snowpark.functions.any_value 的支持

错误修复

  • 修复了以下错误:Table.update 无法处理 VariantTypeMapTypeArrayType 数据类型。

  • 修复了以下错误:在 DataFrame.join 中错误解析了列别名,导致从联接的 DataFrame 中选择列时出现错误。

  • 修复了以下错误:如果目标表的索引不是默认 RangeIndex,则 Table.updateTable.merge 可能会失败。

版本 1.24.0(2024 年 10 月 28 日)

新功能

  • 更新了 Session 类以保证线程安全。这允许在使用同一 Session 对象时,进行并行 DataFrame 转换、DataFrame 操作、UDF 和存储过程注册,以及并行文件上传。

    • 该功能在默认情况下处于禁用状态,可通过将 FEATURE_THREAD_SAFE_PYTHON_SESSION 设置为 True,为账户启用该功能。

    • 在多线程使用会话时,更新会话配置(例如更改数据库或架构)可能会导致意外行为。

    • 启用后,从 DataFrame.queries API 返回的某些内部创建的临时表名不确定,并且在执行 DataFrame 操作时可能会有所不同。这不会影响用户创建的显式临时表。

  • session.lineage.trace API 中添加了对“Service”域的支持。

  • DataFrameWriter 中添加了对以下方法的支持,以支持菊花链:

    • option

    • options

    • partition_by

  • 添加了对 snowflake_cortex_summarize 的支持。

改进

  • 改进了函数 snowflake.snowpark.functions.array_remove 的以下新功能,使其现在可以在 python 中使用。

  • 在 limit 之后执行 sort 时禁用 SQL 简化。

    • 以前,df.sort().limit()df.limit().sort() 生成了相同的查询,sort 优先于 limit。现在,df.limit().sort() 生成一个读取 df.limit().sort() 的查询。

    • df.limit().sort() 改进生成查询的性能,因为只要达到记录数量,limit 就会停止表扫描。

错误修复

  • 修复了以下错误:临时表的自动清理可能会干扰异步查询执行的结果。

  • 修复了 DataFrame.analytics.time_series_agg 函数中的错误,以在相同滑动间隔内处理多个数据点。

  • 修复了导致 iceberg 架构中结构化对象的字段名称大小写不一致的错误。

弃用

Snowpark pandas API 更新

新功能

  • 添加了对 np.subtractnp.multiplynp.dividenp.true_divide 的支持。

  • 添加了对跟踪 __array_ufunc__ 的使用情况的支持。

  • 添加了对 np.float_powernp.modnp.remaindernp.greaternp.greater_equalnp.lessnp.less_equalnp.not_equalnp.equal 的 numpy 兼容性支持。

  • 添加了对 np.lognp.log2np.log10 的 numpy 兼容性支持。

  • 添加了对 DataFrameGroupBy.bfillSeriesGroupBy.bfillDataFrameGroupBy.ffillSeriesGroupBy.ffill 的支持。

  • Resampler 中添加了对 on 参数的支持。

  • value_counts() 中添加了对 timedelta 输入的支持。

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

  • 添加了对 DataFrame.attrsSeries.attrs 的支持。

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

  • 添加了对 np.full_like 的 numpy 兼容性支持

改进

  • 改进了行键为切片时为 headiloc 生成的 SQL 查询。

  • 改进了向 SeriesDataFrameSeries.dtDatetimeIndex 中的 tz_converttz_localize 传入未知时区时的错误消息。

  • SeriesDataFrameSeries.dtDatetimeIndex 中的 tz_converttz_localize 改进了文档,以指定支持的时区格式。

  • 在使用 snowpark 函数时,添加了对 df.applyseries.apply`(以及 :code:`mapapplymap)的额外 kwargs 支持。在第一个实参不是 pandas 对象的情况下,这允许 apply 和函数之间具有某种与位置无关的兼容性。

  • 改进了行键为标量时为 ilociat 生成的 SQL 查询。

  • 移除了 iterrows 中的所有联接。

  • 改进了 Series.map 的文档以反映不支持的功能。

  • 添加了对 np.may_share_memory 的支持,许多 scikit-learn 函数内部都在使用它。当使用 Snowpark pandas 对象调用时,此方法将始终返回 False。

错误修复

  • 修复了以下错误:当输入包含 timedelta 列时,DataFrameSeries pct_change() 会引发 TypeError

  • 修复了以下错误:replace() 有时会通过 replace() 错误地传播 Timedelta 类型。取而代之的是在 Timedelta 上为 replace() 引发 NotImplementedError

  • 修复了以下错误:DataFrameSeries round() 将为 Timedelta 列引发 AssertionError。取而代之的是在 NotImplementedError 上为 round() 引发 Timedelta

  • 修复了以下错误:当新索引是与原始索引没有重叠类型的 Series 时,reindex 会失败。

  • 修复了以下错误:如果 as_index=False,在对 DataFrameGroupBy 对象调用 __getitem__ 时总是返回 DataFrameGroupBy 对象。

  • 修复了以下错误:在现有列中插入 timedelta 值会静默地将值转换为整数,而不是引发 NotImplementedError

  • 修复了以下错误:axis=0 且 axis=1 的 DataFrame.shift() 无法传播 timedelta 类型。

  • DataFrame.abs()DataFrame.__neg__()DataFrame.stack()DataFrame.unstack() 现在为 timedelta 输入引发 NotImplementedError,而不是无法传播 timedelta 类型。

Snowpark 本地测试更新

错误修复

  • 修复了以下错误:DataFrame.alias 为输入列名称引发 KeyError

  • 修复了以下错误:当数据包含空字符串时,Snowflake 暂存区上的 to_csv 失败。

版本 1.23.0(2024 年 10 月 9 日)

新功能

  • snowflake.snowpark.functions 中添加了以下新函数:

    • make_interval

  • 添加了以下支持:当按列排序为 TIMESTAMP 或 DATE 类型时,在 Window.range_between() 中使用 Snowflake 间隔时间常量。

  • 添加了对文件写入的支持。此功能目前处于非公开预览阶段。

  • QueryRecord 中添加了 thread_id,以跟踪用于提交查询历史记录的线程 ID。

  • 添加了对 Session.stored_procedure_profiler 的支持。

错误修复

  • 修复了以下错误:尝试从函数读取默认值时,使用类型提示注册存储过程或 UDxF 会发出警告,即 NoneType 没有 len()

Snowpark pandas API 更新

新功能

  • 添加了对 TimedeltaIndex.mean 方法的支持。

  • 添加了对以下某些情况的支持:使用 aggaggregate 聚合 axis=0Timedelta 列。

  • pd.merge_asof 添加了对 byleft_byright_byleft_indexright_index 的支持。

  • 添加了以下支持:将参数 include_describe 传递到 Session.query_history

  • 添加了对 DatetimeIndex.meanDatetimeIndex.std 方法的支持。

  • 添加了对 Resampler.asfreqResampler.indicesResampler.nuniqueResampler.quantile 的支持。

  • closed = "left" 时添加了对 resample 频率 WMEYE 的支持。

  • pairwise = False 和 int window 添加了对 DataFrame.rolling.corrSeries.rolling.corr 的支持。

  • Rolling 添加了对基于时间的字符串 windowmin_periods = None 的支持。

  • 添加了对 DataFrameGroupBy.fillnaSeriesGroupBy.fillna 的支持。

  • 添加了以下支持:使用惰性 Index 对象作为 dataindex、和 columns 实参来构造 SeriesDataFrame 对象。

  • 添加了以下支持:使用 DataFrame/Series data 中不存在的 indexcolumn 值构造 SeriesDataFrame 对象。

  • 添加了对 :code:`pd.read_sas`(使用原生 Pandas 进行处理)的支持。

  • 添加了以下支持:将 rolling().count()expanding().count() 应用到 Timedelta 系列和列。

  • pd.date_rangepd.bdate_range 中添加了对 tz 的支持。

  • 添加了对 Series.items 的支持。

  • pd.to_datetime 中添加了对 errors="ignore" 的支持。

  • 添加了对 DataFrame.tz_localizeSeries.tz_localize 的支持。

  • 添加了对 DataFrame.tz_convertSeries.tz_convert 的支持。

  • 添加了以下支持:在 Series.mapSeries.applyDataFrame.applyDataFrame.applymap 中应用 Snowpark Python 函数(例如 sin)。

改进

  • 改进了 to_pandas,以保持 TIMESTAMP_TZ 类型的原始时区偏移。

  • 改进了 TIMESTAMP_TZ 类型的 dtype 结果,以显示正确的时区偏移。

  • 改进了 TIMESTAMP_LTZ 类型的 dtype 结果,以显示正确的时区。

  • 改进了将非布尔值传递给 groupby 聚合的 numeric_only 时的错误消息。

  • 移除了有关 sort_values 中排序算法的不必要警告。

  • 为内部创建临时表使用 SCOPED 对象。如果 SCOPED 对象在存储的 sproc 内创建,则在存储的 sproc 作用域内,否则将在会话作用域内,并且该对象将在作用域结束时自动清除。

  • 改进了针对无意中导致物化速度缓慢的操作的警告消息。

  • 移除了 Series.apply 中关于 convert_dtype 的不必要警告消息。

错误修复

  • 修复了以下错误:在原地更新已应用到原始 Series/DataFrame 后,通过 Series/DataFrame 创建的 Index 对象未正确更新 Series/DataFrame 的索引名称。

  • 阻止了在打印 Timedelta 列时有时会显示的无用 SettingWithCopyWarning

  • 修复了源自其他 Series 对象的 Series 对象的 inplace 实参。

  • 修复了以下错误:如果系列名称与索引列名称重叠,Series.sort_values 会失败。

  • 修复了以下错误:更换数据帧会将 Timedelta 索引级别映射到整数列级别。

  • 修复了以下错误:timedelta 列的 Resampler 方法会生成整数结果。

  • 修复了以下错误:pd.to_numeric()Timedelta 输入保留为 Timedelta,而不是将其转换为整数。

  • 修复了使用系列值设置 loc 的单行或多行时的 DataFrame 设置。

版本 1.22.1(2024 年 9 月 11 日)

  • 这是 1.22.0 的重新发布版本。有关详细的版本内容,请参阅 1.22.0 版本说明。

版本 1.22.0(2024 年 9 月 10 日)

新功能

  • snowflake.snowpark.functions 中添加了以下新函数:

    • array_remove

    • ln

改进

  • 改进了 Session.write_pandas 的文档,使 use_logical_type 选项更加明确。

  • 支持将以下内容指定为 DataFrameWriter.save_as_table

    • enable_schema_evolution

    • data_retention_time

    • max_data_extension_time

    • change_tracking

    • copy_grants

    • iceberg_config – 可以保存以下 Iceberg 配置选项的字典:

      • external_volume

      • catalog

      • base_location

      • catalog_sync

      • storage_serialization_policy

  • 支持将以下内容指定为 DataFrameWriter.copy_into_table

    • iceberg_config – 可以保存以下 Iceberg 配置选项的字典:

      • external_volume

      • catalog

      • base_location

      • catalog_sync

      • storage_serialization_policy

  • 支持将以下参数指定为 DataFrame.create_or_replace_dynamic_table

    • mode

    • refresh_mode

    • initialize

    • clustering_keys

    • is_transient

    • data_retention_time

    • max_data_extension_time

错误修复

  • 修复了 session.read.csv 中的以下错误:以外部定义的文件格式设置 PARSE_HEADER = True 时,它会导致错误。

  • 修复了以下错误:通过设定的操作生成查询时允许在子级有共同子查询时生成重复查询。

  • 修复了 session.get_session_stage 中的以下错误:在切换数据库或架构后引用不存在的暂存区。

  • 修复了以下错误:在没有显式初始化 Snowpark pandas 插件的情况下调用 DataFrame.to_snowpark_pandas 会导致错误。

  • 修复了以下错误:在动态表创建中使用 explode 函数时,由于 outer 参数的布尔类型转换不当而导致 SQL 编译错误。

Snowpark 本地测试更新

新功能

  • 在将列作为输入传递给 UDF 调用时,添加了对类型强制的支持。

  • 添加了对 Index.identical 的支持。

错误修复

  • 修复了以下错误:DataFrameWriter.save_as_table 中的截断模式未正确处理仅包含现有表中一部分列的 DataFrames。

  • 修复了以下错误:函数 to_timestamp 未设置列数据类型的默认时区。

Snowpark pandas API 更新

新功能

  • 添加了对 Timedelta 类型的有限支持,包括以下功能。Snowpark pandas 将为不支持的 NotImplementedError 引发 Timedelta

    • 支持通过 copycache_resultshiftsort_indexassignbfillffillfillnacomparediffdropdropnaduplicatedemptyequalsinsertisinisnaitemsiterrowsjoinlenmaskmeltmergenlargestnsmallestto_pandas 跟踪 Timedelta 类型。

    • 支持通过 astype 将非 timedelta 转换为 timedelta。

    • 将为不支持 Timedelta 的其他方法引发 NotImplementedError

    • 支持减去两个时间戳以得到 Timedelta

    • 支持使用 Timedelta 数据列编制索引。

    • 支持添加或减去时间戳和 Timedelta

    • 支持两个 Timedelta 值之间的二进制算术。

    • 支持二进制算术以及 Timedelta 值与数值之间的比较。

    • 支持惰性 TimedeltaIndex

    • 支持 pd.to_timedelta

    • 支持 GroupBy 聚合 minmaxmeanidxmaxidxminstdsummediancountanyallsizenuniqueheadtailaggregate

    • 支持 GroupBy 筛选 firstlast

    • 支持 TimedeltaIndex 属性:dayssecondsmicrosecondsnanoseconds

    • 支持 diff,带有 axis=0axis=1 的时间戳列。

    • 支持 TimedeltaIndex 方法:ceilfloorround

    • 支持 TimedeltaIndex.total_seconds 方法。

  • 添加了对索引算术和比较运算符的支持。

  • 添加了对 Series.dt.round 的支持。

  • 添加了 DatetimeIndex 的文档页面。

  • 添加了对 Index.nameIndex.namesIndex.renameIndex.set_names 的支持。

  • 添加了对 Index.__repr__ 的支持。

  • 添加了对 DatetimeIndex.month_nameDatetimeIndex.day_name 的支持。

  • 添加了对 Series.dt.weekdaySeries.dt.timeDatetimeIndex.time 的支持。

  • 添加了对 Index.minIndex.max 的支持。

  • 添加了对 pd.merge_asof 的支持。

  • 添加了对 Series.dt.normalizeDatetimeIndex.normalize 的支持。

  • 添加了对 Index.is_booleanIndex.is_integerIndex.is_floatingIndex.is_numericIndex.is_object 的支持。

  • 添加了对 DatetimeIndex.roundDatetimeIndex.floorDatetimeIndex.ceil 的支持。

  • 添加了对 Series.dt.days_in_monthSeries.dt.daysinmonth 的支持。

  • 添加了对 DataFrameGroupBy.value_countsSeriesGroupBy.value_counts 的支持。

  • 添加了对 Series.is_monotonic_increasingSeries.is_monotonic_decreasing 的支持。

  • 添加了对 Index.is_monotonic_increasingIndex.is_monotonic_decreasing 的支持。

  • 添加了对 pd.crosstab 的支持。

  • 添加了对 pd.bdate_range 的支持,包含了对 pd.date_rangepd.bdate_range 的业务频率支持 (B、BME、BMS、BQE、BQS、BYE、BYS)。

  • 添加了对惰性 Index 对象的支持,作为 DataFrame.reindexSeries.reindex 中的 labels

  • 添加了对 Series.dt.daysSeries.dt.secondsSeries.dt.microsecondsSeries.dt.nanoseconds 的支持。

  • 添加了以下支持:根据数字或字符串类型的 Index 创建 DatetimeIndex

  • 添加了以下支持:使用 Timedelta 对象编制字符串索引。

  • 添加了对 Series.dt.total_seconds 方法的支持。

改进

  • 通过避免不必要的联接,改进了对来自同一 DataFrame 的系列执行操作时的合并和联接性能。

  • 重构了 quoted_identifier_to_snowflake_type,以避免在类型已在本地缓存时进行元数据查询。

  • 改进了 pd.to_datetime,以处理所有本地输入案例。

  • 通过另一个惰性索引创建惰性索引,无需将数据提取到客户端。

  • 为索引按位运算符引发了 NotImplementedError

  • Index.names 设置为非列表类对象时,显示更清晰的错误消息。

  • 每当在本地提取 MultiIndex 值时,都会引发警告。

  • 改进了 pd.read_snowflake 的警告消息,以包括触发临时表创建时的创建原因。

  • 通过避免需要紧急评估的检查,改进了 DataFrame.set_index 的性能,或者设置 DataFrame.indexSeries.index。因此,当新索引与当前 SeriesDataFrame 对象长度不匹配时,不再引发 ValueError。取而代之的是,当 SeriesDataFrame 对象长于提供的索引时,SeriesDataFrame 的新索引将使用“extra”元素的 NaN 值填充。否则,忽略在提供的索引中的 extra 值。

错误修复

  • 停止忽略 pd.Timedelta 标量中的纳秒。

  • 修复了二进制运算树中的 AssertionError

  • 修复了使用命名 Series 时 Series.dt.isocalendar 中的错误

  • 修复了源自 DataFrame 列的 Series 对象的 inplace 实参。

  • 修复了以下错误:Series.reindexDataFrame.reindex 未正确更新结果索引的名称。

  • 修复了以下错误:指定 axis=1 时,Series.take 未给出错误。

版本 1.21.1(2024 年 9 月 5 日)

错误修复

  • 修复了以下错误:由于未合理等待异步查询完成,为异步作业使用 to_pandas_batches 时导致错误。

版本 1.21.0(2024 年 8 月 19 日)

新功能

  • 增加了对 snowflake.snowpark.testing.assert_dataframe_equal 的支持,这是一个实用程序函数,用于检查两个 Snowpark DataFrames 是否相等。

改进

  • 添加了对服务器端字符串大小限制的支持。

  • 添加了以下支持:使用可选实参创建和调用存储过程、UDFs 和 UDTFs。

  • DataFrame.lineage.trace API 中添加了对列沿袭的支持。

  • 添加了以下支持:通过 INFER_SCHEMA_OPTIONSINFER_SCHEMA 选项传递到 DataFrameReader

  • 添加了以下支持:将 parameters 参数传递到 Column.rlikeColumn.regexp

  • 添加了以下支持:在不再引用(即垃圾回收)DataFrame 时,自动清理当前会话中 df.cache_result() 创建的临时表。它仍然是一项实验性功能,默认情况下未启用。可以将 session.auto_clean_up_temp_table_enabled 设置为 True,以启用该功能。

  • snowflake.snowpark.functions.to_datefmt 参数添加了对字符串字面量的支持。

错误修复

  • 修复了以下错误:为选择 * 列而生成的 SQL 有不正确的子查询。

  • 修复了 DataFrame.to_pandas_batches 中的以下错误:如果因隔离级别错误而对 pandas DataFrame 进行特定转换,迭代器可能会引发错误。

  • 修复了 DataFrame.lineage.trace 中的错误,以正确拆分引用的功能视图的名称和版本。

  • 修复了 Column.isin 中在传递空列表时导致 SQL 生成无效的错误。

  • 修复了以下错误:在使用列表类项目设置单元格时无法引发 NotImplementedError

Snowpark 本地测试更新

新功能

  • 添加了对以下 APIs 的支持:

    • snowflake.snowpark.functions

      • rank

      • dense_rank

      • percent_rank

      • cume_dist

      • ntile

      • datediff

      • array_agg

    • snowflake.snowpark.column.Column.within_group

  • 添加了以下支持:解析模拟计划的正则表达式语句中的标志。这与上述 rlikeregexp 变更保持一致。

错误修复

  • 修复了以下错误:窗口函数 LEADLAG 没有合理处理选项 ignore_nulls

  • 修复了以下错误:在插入表格合并操作期间,未将值填充到结果 DataFrame。

改进

  • 修复了关于整数索引的 pandas FutureWarning

Snowpark pandas API 更新

新功能

  • 添加了对 DataFrame.backfillDataFrame.bfillSeries.backfillSeries.bfill 的支持。

  • 添加了对采用默认参数的 DataFrame.compareSeries.compare 的支持。

  • 添加了对 Series.dt.microsecondSeries.dt.nanosecond 的支持。

  • 添加了对 Index.is_uniqueIndex.has_duplicates 的支持。

  • 添加了对 Index.equals 的支持。

  • 添加了对 Index.value_counts 的支持。

  • 添加了对 Series.dt.day_nameSeries.dt.month_name 的支持。

  • 添加了对 Index 索引的支持,例如 df.index[:10]

  • 添加了对 DataFrame.unstackSeries.unstack 的支持。

  • 添加了对 DataFrame.asfreqSeries.asfreq 的支持。

  • 添加了对 Series.dt.is_month_startSeries.dt.is_month_end 的支持。

  • 添加了对 Index.allIndex.any 的支持。

  • 添加了对 Series.dt.is_year_startSeries.dt.is_year_end 的支持。

  • 添加了对 Series.dt.is_quarter_startSeries.dt.is_quarter_end 的支持。

  • 添加了对懒惰 DatetimeIndex 的支持。

  • 添加了对 Series.argmaxSeries.argmin 的支持。

  • 添加了对 Series.dt.is_leap_year 的支持。

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

  • 添加了对 Series.dt.floorSeries.dt.ceil 的支持。

  • 添加了对 Index.reindex 的支持。

  • 添加了对 DatetimeIndex 属性的支持:yearmonthdayhourminutesecondmicrosecondnanoseconddatedayofyearday_of_yeardayofweekday_of_weekweekdayquarteris_month_startis_month_endis_quarter_startis_quarter_endis_year_startis_year_endis_leap_year

  • 添加了对 Resampler.fillnaResampler.bfill 的支持。

  • 添加了对 Timedelta 类型的有限支持,包括创建 Timedelta 列和 to_pandas

  • 添加了对 Index.argmaxIndex.argmin 的支持。

改进

  • 移除了导入 Snowpark pandas 时的公共预览警告消息。

  • 移除了 SnowflakeQueryCompiler.is_series_like 方法中不必要的计数查询。

  • Dataframe.columns 现在返回原生 pandas Index 对象,而不是 Snowpark Index 对象。

  • Index 构造函数中重构并引入 query_compiler 实参,以从查询编译器创建 Index

  • pd.to_datetime 现在返回 DatetimeIndex 对象,而不是 Series 对象。

  • pd.date_range 现在返回 DatetimeIndex 对象,而不是 Series 对象。

错误修复

  • 将不支持的聚合函数传递给 pivot_table 会引发 NotImplementedError,而不是 KeyError

  • 从有关不支持的聚合的错误消息和遥测中移除了轴标签和可调用名称。

  • 修复了在 sort_values 之后调用时 Series.drop_duplicatesDataFrame.drop_duplicates 中的 AssertionError

  • 修复了 Index.to_frame 中的错误:未指定名称时结果框架的列名可能错误。

  • 修复了某些 Index 文档字符串被忽略的错误。

  • 修复了 Series.reset_index(drop=True) 中的错误:结果名称可能错误。

  • 修复了 Groupby.first/last 中的错误:在底层窗口表达式中按正确列进行排序。

版本 1.20.0(2024 年 7 月 17 日)

1.20.0 版 Snowpark Library for Python 引入了一些新功能。

新功能

  • DataFrame 中为表存储过程函数添加了使用开放遥测 APIs 的分布式跟踪。

    • _execute_and_get_query_id

  • 添加了对 arrays_zip 函数的支持。

  • 通过避免对数值进行不必要的转换,提高了二进制列表达式和 df._in 的性能。您可以通过设置 session.eliminate_numeric_sql_value_cast_enabled = True 来启用此优化。

  • 当目标表不存在以及 auto_create_table=False 时,改进了 write_pandas 的错误消息。

  • 在 Snowpark 中添加了对 UDxF 函数的开放式遥测跟踪。

  • 在 Snowpark 中添加了对存储过程注册的开放式遥测跟踪。

  • 将名为 format_json 的新可选参数添加到 Session.SessionBuilder.app_name 函数,该函数以 JSON 格式在 Session.query_tag 中设置应用程序名称。默认情况下,此参数设置为 False

错误修复

  • 修复了以下错误:为 lag(x, 0) 生成的 SQL 不正确且失败,显示错误消息 argument 1 to function LAG needs to be constant, found 'SYSTEM$NULL_TO_FIXED(null)'

Snowpark 本地测试更新

新功能

  • 添加了对以下 APIs 的支持:

    • snowflake.snowpark.functions

      • random

  • 注册模拟函数时向 patch 函数添加了新参数:

    • distinct 允许在 SQL 函数应不同时指定备用函数。

    • pass_column_index 将命名参数 column_index 传递到模拟函数,该函数包含用于输入数据的 pandas.Index

    • pass_row_index 将命名参数 row_index 传递给模拟函数,这是该函数当前运行的以 0 为索引的行号。

    • pass_input_data 将命名参数 input_data 传递给模拟函数,该函数包含当前表达式的整个输入数据帧。

    • 添加了对 DataFrameWriter.save_as_table 方法中 column_order 参数的支持。

错误修复

  • 修复了以下错误:在 BinaryExpressions 中使用时,DecimalType 列错误截断为整数精度。

Snowpark pandas API 更新

新功能

  • 增加了对以下内容的新 API 支持:

    • DataFrames

      • DataFrame.nlargestDataFrame.nsmallest

      • DataFrame.assign

      • DataFrame.stack

      • DataFrame.pivot

      • DataFrame.to_csv

      • DataFrame.corr

      • DataFrame.corr

      • DataFrame.equals

      • DataFrame.reindex

      • DataFrame.atDataFrame.iat

    • Series

      • Series.nlargestSeries.nsmallest

      • Series.atSeries.iat

      • Series.dt.isocalendar

      • Series.equals

      • Series.reindex

      • Series.to_csv

      • Series.case_when,除非条件或替换可调用

      • series.plot(),数据物化到本地客户端

    • GroupBy

      • DataFrameGroupBy.allDataFrameGroupBy.any

      • DataFrameGroupBySeriesGroupBy 聚合 firstlast

      • DataFrameGroupBy.get_group

      • SeriesGroupBy.allSeriesGroupBy.any

    • 通用

      • pd.pivot

      • :code:`read_excel`(使用本地 pandas 进行处理)

      • df.plot(),数据物化到本地客户端

  • 扩展了现有 APIs,如下所示:

    • DataFrame.sampleSeries.sample 中添加了对 replacefrac > 1 的支持。

    • 添加了对 Series.str.translate 的部分支持,其中 table 的值为单代码点字符串。

    • fillna 中使用 method 参数时,添加了对 limit 参数的支持。

  • Index 及其 APIs 添加了文档页面。

错误修复

  • 修复了标量 other 为字面量 0 时使用 np.where 和 df.where 时出现的问题。

  • 修复了在使用 dtype=np.uint64 转换为 Snowpark pandas DataFrameSeries 时关于精度损失的错误。

  • 修复了以下错误:当 indexcolumnspivot_table 期间包含 DataFrame 中所有列时,values 设置为 index

改进

  • 添加了对 Index.copy() 的支持。

  • 添加了对 Index APIs 的支持:dtypevaluesitem()tolist()to_series()to_frame()

  • 扩展对 DataFrames 的支持,pd.pivot_tableDataFrame.pivot_table 中不包含行。

  • DataFrame.sort_indexSeries.sort_index 中添加了对 inplace 参数的支持。

版本 1.19.0(2024 年 6 月 25 日)

1.19.0 版 Snowpark Library for Python 引入了一些新功能。

新功能

  • 添加了对 to_boolean 函数的支持。

  • Index 及其 APIs 添加了文档页面。

错误修复

  • 修复了以下错误:在任务中运行时,具有表返回类型的 Python 存储过程会失败。

  • 修复了以下错误:当 DataFrame 有 500 多列时,df.dropnaRecursionError: maximum recursion depth exceeded 而失败。

  • 修复了以下错误:AsyncJob.result("no_result") 没有等待查询完成执行。

本地测试更新

新功能

  • 在注册 UDFs 和存储过程时,添加了对 strict 参数的支持。

错误修复

  • 修复了 convert_timezone 中的错误:设置 source_timezone 参数会返回错误。

  • 修复了以下错误:使用 DateType 类型的空数据创建 DataFrame 会引发 AttributeError

  • 修复了以下错误:存在更新子句但未进行更新时表合并会失败。

  • 修复了 to_char 模拟实施的错误,该错误会在传入列具有非连续行索引时引发 IndexError

  • 修复了在处理 CaseExpr 表达式时的错误,该错误会在传入列具有非连续行索引时引发 IndexError

  • 修复了 Column.like 实施中的错误,该错误会在传入列具有非连续行索引时引发 IndexError

改进

  • DataFrame.replaceDataFrame.dropna 和模拟函数 iff 的实施中添加了对类型强制的支持。

Snowpark pandas API 更新

新功能

  • 添加了对 DataFrame.pct_changeSeries.pct_change 的支持,不包含 freqlimit 参数。

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

  • 添加了对 Series.dt.dayofweekSeries.dt.day_of_weekSeries.dt.dayofyearSeries.dt.day_of_year 的支持。

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

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

  • 添加了对 DataFrameGroupby.sizeSeriesGroupby.size 的支持。

  • axis=0 的聚合 countsumminmaxmeanstdvar 添加了对 DataFrame.expandingSeries.expanding 的支持。

  • axis=0 的聚合计数添加了对 DataFrame.rollingSeries.rolling 的支持。

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

  • 为聚合大小添加了对 DataFrame.resampleSeries.resample 的支持。

错误修复

  • 修复了会导致 GroupBy.aggregate 列的输出不正确排序的错误。

  • 修复了以下错误:对具有区分 dtypes 的重复列的帧调用 DataFrame.describe 可能会导致错误或错误结果。

  • 修复了 DataFrame.rollingSeries.rolling 中的错误,因此 window=0 现在抛出 NotImplementedError,而不是 ValueError

改进

  • 添加了对具有 axis=0DataFrame.aggregateSeries.aggregate 中的命名聚合的支持。

  • pd.read_csv 使用原生 pandas CSV 解析器读取数据,然后使用 parquet 将数据上传到 Snowflake。这样会启用 read_csv 支持的大多数参数,包括日期解析和数字转换。通过 parquet 上传的速度大约是通过 CSV 上传的两倍。

  • 最初的工作是直接在 Snowpark pandas 中支持 pd.Index。正在积极开发对作为 Snowpark pandas 的一流组件的 pd.Index 的支持。

  • 添加了惰性索引构造函数并支持 lenshapesizeemptyto_pandas()names。对于 df.index,Snowpark pandas 会创建惰性索引对象。

  • 对于 df.columns,Snowpark pandas 支持非惰性版本的 Index,因为数据已在本地存储。

版本 1.18.0(2024 年 5 月 28 日)

1.18.0 版 Snowpark 库推出了一些新功能。

新功能

  • 添加了 DataFrame.cache_resultSeries.cache_result 方法,以便用户在会话期间将 DataFrameSeries 对象保存到临时表,从而缩短后续操作的延迟。

改进

  • 添加了对 DataFrame.pivot_table 的支持,不包含 index 参数,包含 margins 参数。

  • 更新了 DataFrame.shiftSeries.shiftDataFrameGroupBy.shiftSeriesGroupBy.shift 的签名,以匹配 pandas 2.2.1。Snowpark pandas 尚不支持新添加的后缀实参或周期序列值。

  • 重新添加了对 Series.str.split 的支持。

错误修复

  • 修复了字符串方法 (Series.str.*) 的混合列问题。

本地测试更新

新功能

  • 为文件格式 CSV 和 JSON 添加了对以下 DataFrameReader 读取选项的支持:

    • PURGE

    • PATTERN

    • 值为 False 的 INFER_SCHEMA

    • 值为 UTF8 的 ENCODING

  • 添加了对 DataFrame.analytics.moving_aggDataFrame.analytics.cumulative_agg_agg 的支持。

  • 在 UDF 和存储过程注册期间添加了对 if_not_exists 参数的支持。

错误修复

  • 修复了处理时间格式时无法正确处理小数第二部分的错误。

  • 修复了导致对 * 的函数调用失败的错误。

  • 修复了阻止创建 mapstruct 类型对象的错误。

  • 修复了以下错误:函数 date_add 无法处理某些数字类型。

  • 修复了以下错误:TimestampType 类型转换导致数据不正确。

  • 修复了在某些情况下导致 DecimalType 数据精度不正确的错误。

  • 修复了以下错误:引用缺失的表或视图会引发 IndexError

  • 修复了以下错误:模拟函数 to_timestamp_ntz 无法处理 None 数据。

  • 修复了以下错误:模拟 UDFs 无法正确处理 None 的输出数据。

  • 修复了以下错误:联接操作后 DataFrame.with_column_renamed 忽略了来自父 DataFrames 的属性。

  • 修复了以下错误:在转换为 pandas DataFrame 时,大型值的整数精度丢失。

  • 修复了以下错误:在从 pandas DataFrame 创建 DataFrame 时,datetime 对象的架构错误。

  • 修复了 Column.equal_nan 实施中的错误:空数据未正确处理。

  • 修复了以下错误:联接操作后 DataFrame.drop 忽略了来自父 DataFrames 的属性。

  • 修复了模拟函数 date_part 中的错误:列类型设置不正确。

  • 修复了以下错误:在将空数据插入不可为空的列时,DataFrameWriter.save_as_table 未引发异常。

  • 修复了 DataFrameWriter.save_as_table 实施中的错误:

    • 当传入数据的架构与现有表不同时,追加或截断失败。

    • 当传入的数据未指定可为空的列时,截断失败。

改进

  • 移除了 pyarrow 的依赖项检查,因为它未使用。

  • 改进了 Column.cast 的目标类型覆盖范围,添加了对转换为布尔和所有整数类型的支持。

  • 调整了调用 UDFs 和存储过程时的错误体验。

  • 为 UDFs 和存储过程注册中的 is_permanentanonymous 选项添加了相应的错误消息,以更清楚地表明尚不支持这些功能。

  • 现在,使用不支持的选项和值的文件读取操作会引发 NotImplementedError,而不是警告和不明确的错误信息。

版本 1.17.0(2024 年 5 月 21 日)

1.17.0 版 Snowpark 库推出了一些新功能。

新功能

  • 支持使用下面列出的函数为表和视图添加注释:

    • DataFrameWriter.save_as_table

    • DataFrame.create_or_replace_view

    • DataFrame.create_or_replace_temp_view

    • DataFrame.create_or_replace_dynamic_table

改进

  • 改进了错误消息,提醒用户在读取 CSV 文件时设置 {"infer_schema": True},而不指定其架构。

本地测试更新

新功能

  • 在模拟函数 to_timestamp_ltzto_timestamp_ntzto_timestamp_tzto_timestamp 中添加了对 NumericTypeVariantType 的支持。

  • 在模拟函数 to_char 中添加了对 DecimalTypeBinaryTypeArrayTypeMapTypeTimestampTypeDateTypeTimeType 的支持。

  • 添加了对以下 APIs 的支持:

    • snowflake.snowpark.functions.to_varchar

    • snowflake.snowpark.DataFrame.pivot

    • snowflake.snowpark.Session.cancel_all

  • 引入了新的异常类 snowflake.snowpark.mock.exceptions.SnowparkLocalTestingException

  • 添加了对转换为 FloatType 的支持。

错误修复

  • 修复了以下错误:在清理步骤中存储过程和 UDFs 不应移除 sys.path 中已有的导入。

  • 修复了以下错误:在处理 datetime 格式时,小数第二部分无法正确处理。

  • 修复了以下错误:Windows 平台上的文件操作无法正确处理目录名中的文件分隔符。

  • 修复了以下错误:在 Windows 平台上读取 pandas 数据帧时,无法处理包含整型数据的 IntervalType 列。

  • 修复了导致用户无法选择具有相同别名的多个列的错误。

  • 修复了以下错误:标识符加引号时,Session.get_current_[schema|database|role|user|account|warehouse] 返回大写标识符。

  • 修复了以下错误:substrsubstring 无法处理从零开始的 start_expr

改进

  • 通过在错误案例中引发 SnowparkLocalTestingException 实现了标准化错误体验,这与在非本地执行中引发的 SnowparkSQLException 相当。

  • 改进了 Session.write_pandas 方法的错误体验,因此在调用时会引发 NotImplementError

  • 调整了错误体验,在非本地执行中重用封闭会话。

版本 1.16.0(2024 年 5 月 8 日)

1.16.0 版 Snowpark 库推出了一些新功能。

新功能

  • 添加了 snowflake.snowpark.Session.lineage.trace,以探索 Snowflake 对象的数据沿袭。

  • 添加了以下支持:通过作为 Python 模块提供的包注册存储过程。

  • 添加了对结构化类型架构解析的支持。

错误修复

  • 修复了以下错误:在推断架构时,单引号被添加到已有单引号的暂存区文件。

本地测试更新

新功能

  • 在模拟函数 to_date 中添加了对 StringTypeTimestampTypeVariantType 的支持。

  • 添加了对以下 APIs 的支持:

    • snowflake.snowpark.functions

      • get

      • concat

      • concat_ws

错误修复

  • 修复了导致 NaTNaN 无法识别的错误。

  • 修复了以下错误:在推断架构时,单引号被添加到已有单引号的暂存区文件。

  • 修复了以下错误:DataFrameReader.csv 无法处理包含分隔符的引号值。

  • 修复了以下错误:当算数计算中存在 None 值,输出应保持 None,而不是 math.nan

  • 修复了函数 sumcovar_pop 中的错误:当存在 math.nan 值时,输出也应为 math.nan

  • 修复了以下错误:暂存区操作无法处理目录。

  • 修复了以下错误:DataFrame.to_pandas 应将精度为 38 的 Snowflake 数值类型视作 int64

版本 1.15.0(2024 年 4 月 24 日)

1.15.0 版 Snowpark 库推出了一些新功能。

新功能

  • DataFrameWrite 中添加了 truncate 保存模式,通过截断(而不是删除)基础表来覆盖现有表。

  • 添加了遥测功能,用于在收集操作期间计算查询计划高度和重复节点数。

  • 添加了以下函数,将 DataFrame 中的数据添加到暂存区的一个或多个文件:

    • DataFrame.write.json

    • DataFrame.write.csv

    • DataFrame.write.parquet

  • DataFrameDataFrameWriter 中为动作函数添加了使用开放遥测 APIs 的分布式跟踪。

    • snowflake.snowpark.DataFrame

      • collect

      • collect_nowait

      • to_pandas

      • count

      • show

    • snowflake.snowpark.DataFrameWriter

      • save_as_table

  • snowflake.snowpark.Session.file.getsnowflake.snowpark.Session.file.get_stream 添加了对 snow:// URLs 的支持

  • 添加了以下支持:使用 comment 注册存储过程和 UDFs。

  • UDAF 客户端支持提供公共预览版。敬请关注 UDAF 公共预览版的 Snowflake 公告。

  • 添加了对动态透视的支持。此功能目前处于非公开预览阶段。

改进

  • 通过将重复的子查询转换为公用表表达式 (CTEs),改进了编译和执行时生成的查询性能。该功能仍然是一项实验性功能,默认情况下未启用。您可以将 session.cte_optimization_enabled 设置为 True,启用该功能。

错误修复

  • 修复了以下错误:statement_params 没有传递给用于注册存储过程和用户定义函数的查询执行。

  • 修复了导致 snowflake.snowpark.Session.file.get_stream 在处理引用的暂存区位置时失败的问题。

  • 修复了以下错误:在找不到基础模块时,utils.py 中的内部类型提示可能会提出 AttributeError

本地测试更新

新功能

  • 添加了以下支持:注册 UDFs 和存储过程。

  • 添加了对以下 APIs 的支持:

    • snowflake.snowpark.Session

      • file.put

      • file.put_stream

      • file.get

      • file.get_stream

      • read.json

      • add_import

      • remove_import

      • get_imports

      • clear_imports

      • add_packages

      • add_requirements

      • clear_packages

      • remove_package

      • udf.register

      • udf.register_from_file

      • sproc.register

      • sproc.register_from_file

    • snowflake.snowpark.functions

      • current_database

      • current_session

      • date_trunc

      • object_construct

      • object_construct_keep_null

      • pow

      • sqrt

      • udf

      • sproc

  • 在模拟函数 to_time 中添加了对 StringTypeTimestampTypeVariantType 的支持。

错误修复

  • 修复了以下问题:常量函数的列填充空值。

  • 修复了 to_objectto_arrayto_binary,以更好地处理空值输入。

  • 修复了以下问题:时间戳数据比较无法处理 2262 年之后的年份的。

  • 修复了以下问题:Session.builder.getOrCreate 应返回创建的模拟会话。

版本 1.14.0(2024 年 3 月 20 日)

1.14.0 版 Snowpark 库推出了一些新功能。

新功能

  • 添加了以下支持:使用 process 方法创建矢量化 UDTFs。

  • 添加了对 DataFrame 函数的支持:

    • to_timestamp_ltz

    • to_timestamp_ntz

    • to_timestamp_tz

    • locate

  • 添加了对 ASOF JOIN 类型的支持。

  • 添加了对以下本地测试 APIs 的支持:

    • snowflake.snowpark.functions:

      • to_double

      • to_timestamp

      • to_timestamp_ltz

      • to_timestamp_ntz

      • to_timestamp_tz

      • greatest

      • least

      • convert_timezone

      • dateadd

      • date_part

    • snowflake.snowpark.Session:

      • get_current_account

      • get_current_warehouse

      • get_current_role

      • use_schema

      • use_warehouse

      • use_database

      • use_role

改进

  • 将遥测添加到了本地测试。

  • 改进了 DataFrameReader 的错误消息,在读取不存在的路径或路径下没有文件时引发 FileNotFound 错误。

错误修复

  • 修复了 SnowflakePlanBuilder 中的错误:save_as_table 没有正确筛选名称以 $ 开头并后跟一个数字的列。

  • 修复了以下错误:在解析导入和包时语句参数可能不起作用。

  • 修复了本地测试中的错误:

    • LEFT ANTI 和 LEFT SEMI 联接删除具有 null 值的行。

    • 当指定可选参数 field_optionally_enclosed_by 时,DataFrameReader.csv 错误地解析数据。

    • patternColumn 时,Column.regexp 仅考虑首次输入。

    • 当更新行中的 null 值时,Table.update 引发 KeyError

    • VARIANT 列在 DataFrame.collect 引发错误。

    • count_distinct 在计数时无法正常工作。

    • 整型列中的 null 值引发 TypeError

版本 1.13.0(2024 年 2 月 26 日)

1.13.0 版 Snowpark 库推出了一些新功能。

新功能

  • 添加了对 last_day 函数中的可选 date_part 参数的支持。

  • SessionBuilder.app_name 将在会话创建后设置 query_tag

  • 添加了对以下本地测试功能的支持:

    • current_timestamp

    • current_date

    • current_time

    • strip_null_value

    • upper

    • lower

    • length

    • initcap

改进

  • 添加了解释器关闭时的清理逻辑,以关闭所有活动会话。

错误修复

  • 修复了 DataFrame.to_local_iterator 中的错误:如果在迭代器完成之前执行了另一个查询,则由于隔离级别设置不当,迭代器可能会产生错误的结果。

  • 修复了以下错误:在启用本地测试的情况下运行计划时,该错误会在错误消息中截断表名。

  • 修复了以下错误:当范围较大时,Session.range 返回空结果。

版本 1.12.1(2024 年 2 月 8 日)

1.12.1 版 Snowpark 库推出了一些新功能。

改进

  • 默认情况下,在 to_pandas 转换期间使用 split_blocks=True,以优化内存分配。此参数将传递给 pyarrow.Table.to_pandas,以便 PyArrow 将内存分配拆分为更小、更易于管理的块,而不是分配单个连续块。这样可以在处理较大的数据集时实现更好的内存管理。

错误修复

  • 修复了 DataFrame.to_pandas 中的错误:对含 null 值的 IntergerType 列 Dataframe 求值时引发错误。

版本 1.12.0(2024 年 1 月 29 日)

1.12.0 版 Snowpark 库推出了一些新功能。

行为变更(兼容 API)

  • to_pandas 操作期间解析数据类型,我们依靠 GS 精度值修复大整型值的精度问题。这可能影响以下用户:之前以 int8 返回的列现在以 int64 返回。用户可以通过显式指定其返回列的精度值来解决此问题。

  • 在表存储过程的情况下,对齐了 Session.call 的行为,运行 Session.call 不会触发存储过程,除非执行 collect() 操作。

  • StoredProcedureRegistration 现在会自动添加 snowflake-snowpark-python 作为客户端本地版本库的包依赖项。如果服务器无法支持该版本,则会引发错误。

新功能

  • StoredProcedure.__call__ 中公开了 statement_params

  • Session.add_import 添加了两个可选实参:

    • chunk_size:上传文件的每个块要哈希的字节数。

    • whole_file_hash:默认情况下,仅对已上传的导入的第一个块进行哈希处理以节省时间。当此实参设置为 True 时,每个上传的文件都将进行完全哈希处理。

  • 在从 Snowpark Python 创建 UDAF 时,添加了 external_access_integrationssecrets,以便与外部访问集成。

  • 添加了新方法 Session.append_query_tag,这允许将额外标签附加为逗号分隔的值,从而将其添加到当前查询标签。

  • 添加了新方法 Session.update_query_tag,允许更新到 JSON 编码的字典查询标签。

  • 在检测到令牌过期时,SessionBuilder.getOrCreate 现在将尝试替换返回的单例。

  • snowflake.snowpark.functions 中添加了以下函数:

    • array_except

    • create_map

    • sign / signum

  • DataFrame.analytics 添加了以下函数:

    • DataFrame.analytics 中添加了 moving_agg 函数,以启用具有多个窗口大小的移动聚合,例如总和和平均值。

    • DataFrame.analytics 中添加了 cummulative_agg 函数,以启用具有多个窗口大小的移动聚合,例如总和和平均值。

错误修复

  • 修复了 DataFrame.na.fill 中导致布尔值错误地覆盖整型值的错误。

  • 修复了 Session.create_dataframe 中的错误:使用 pandas DataFrames 创建的 Snowpark DataFrames 未正确推断时间戳列的类型。此行为如下所示:

    • 不含时区的早期时间戳列将转换为纳秒纪元,并推断为 LongType(),但现在将正确保留为时间戳值,并推断为 TimestampType(TimestampTimeZone.NTZ)

    • 含时区的早期时间戳列将推断为 TimestampType(TimestampTimeZone.NTZ) 和松散的时区信息,但现在正确推断为 TimestampType(TimestampTimeZone.LTZ) 并且时区信息会正确保留。

    • 设置会话参数 PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAME,以恢复到旧行为。Snowflake 建议您更新代码以符合正确的行为,因为该参数将来将移除。

  • 修复了以下错误:当小数位数不为 0 时,DataFrame.to_pandas 获取小数类型,并在 pandas 中创建对象 dtype。相反,我们将值转换为 float64 类型。

  • 修复了以下错误:当发生以下情况时,错误地展平生成的 SQL:

    • DataFrame.filter()DataFrame.sort().limit() 之后调用。

    • DataFrame.sort()filter() 在已经具有窗口函数或依赖序列的数据生成器列的 DataFrame 上调用。例如 df.select("a", seq1().alias("b")).select("a", "b").sort("a") 不再展平排序子句。

    • DataFrame.limit() 之后使用窗口或依赖序列的数据生成器列。例如,df.limit(10).select(row_number().over()) 不会展平生成的 SQL 中的 limit 和 select。

  • 修复了以下错误:当 DataFame 是从另一个具有别名列的 DataFrame 复制而来时,为 DataFrame 设置别名会引发错误。例如,

    df = df.select(col("a").alias("b"))
    df = copy(df)
    df.select(col("b").alias("c"))  # Threw an error. Now it's fixed.
    
    Copy
  • 修复了 Session.create_dataframe 中的错误:布尔类型不考虑架构中不可为 null 的字段。请注意,仅当用户具有创建临时表的权限时,此修复才有效。

  • 修复了 SQL 简化器中的错误:与 limit() 结合使用时,session.sql 中的非 select 语句删除了 SQL 查询。

  • 修复了以下错误:当会话参数 ERROR_ON_NONDETERMINISTIC_UPDATE 为 Ture 时引发异常。

语言: 中文