2024 年 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.26.0(2024 年 12 月 5 日)¶
新功能¶
对
Session类添加了对属性version和类方法:code:get_active_session的支持。添加了新方法和变量,以加强数据类型处理和 JSON 序列化/反序列化:
到
DataType、其派生类和StructField:type_name:返回数据的类名称。simple_string:提供数据的简单字符串表示。json_value:以 JSON 兼容值的形式返回数据。json:将数据转换为 JSON 字符串。
到
ArrayType、MapType、StructField、PandasSeriesType、PandasDataFrameType和StructType:from_json:允许从 JSON 数据创建这些类型。
到
MapType:keyType:映射的键valueType:映射的值
在
SessionBuilder中添加了对appName方法的支持。在
DataFrame.unpivot中添加了对include_nulls实参的支持。在
functions.py中添加了对以下函数的支持:size,以获取数组、对象或映射列的大小。collect_list,array_agg的别名。concat_ws_ignore_nulls,以连接带有分隔符的字符串,忽略空值。substring,使len实参成为可选实参。
为会话添加了供内部使用的参数
ast_enabled`(默认::code:`False)。
改进¶
支持将以下内容指定为
DataFrame.create_or_replace_dynamic_table:iceberg_config,可以保存以下 Iceberg 配置选项的字典:external_volumecatalogbase_locationcatalog_syncstorage_serialization_policy
向
DataFrame.print_schema添加了对嵌套数据类型的支持向
DataFrame.print_schema添加了对level参数的支持通过增加对以下内容的支持,提高了
DataFrameReader和DataFrameWriterAPI 的灵活性:向
DataFrameReader和DataFrameWriter添加了format方法,以便在加载或卸载结果时指定文件格式。向
DataFrameReader添加了load方法,以便与format配合使用。向
DataFrameWriter添加了save方法,以便与format配合使用。为
DataFrameReader和DataFrameWriter的options方法添加了读取关键字实参的支持。
放宽了 Python 3.11 的 cloudpickle 依赖项,以简化构建要求。但是,对于 Python 3.11,
cloudpickle==2.2.1仍然是唯一支持的版本。
错误修复¶
删除了动态透视功能处于非公开预览版状态的警告,因为动态透视功能现已正式发布。
修正了
session.read.options中的False布尔值在生成的文件格式中被错误解析为True的错误。
依赖项更新¶
对
python-dateutil添加了运行时依赖项。
Snowpark pandas API 更新¶
新功能¶
当
arg是 PandasSeries或collections.abc.Mapping时,添加了对Series.map的部分支持。不支持实施__missing__但不是:code:collections.defaultdict实例的dict实例。为
axis=1和axis=None添加了对DataFrame.align和Series.align的支持。添加了对
pd.json_normalize的支持。添加了对带有
axis=0、freq=None和limit=None的GroupBy.pct_change的支持。添加了对
DataFrameGroupBy.__iter__和SeriesGroupBy.__iter__的支持。添加了对
np.sqrt、np.trunc、np.floor、numpy 三角函数、np.exp、np.abs、np.positive和:code:np.negative的支持。添加了对数据帧交换协议方法
DataFrame.__dataframe__()的部分支持。
错误修复¶
修正了
df.loc中从系列设置单列会导致意外的None值的错误。
改进¶
在 Pandas 中使用 UNPIVOT INCLUDE NULLS 代替哨兵值进行取消透视操作。
改进了
pd.read_excel文档。
版本 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.28和tzlocal的依赖项。为开发配置文件添加了
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.align和Series.align的支持。添加了对
snowflake.snowpark.functions.window的支持添加了对 :code:`pd.read_pickle`(使用原生 Pandas 进行处理)的支持。
添加了对 :code:`pd.read_html`(使用原生 Pandas 进行处理)的支持。
添加了对 :code:`pd.read_xml`(使用原生 Pandas 进行处理)的支持。
在
GroupBy.aggregate、DataFrame.aggregate和Series.aggregate中添加了对聚合函数"size"和len的支持。在
Series.str.len中添加了对列表值的支持。
错误修复¶
修复了以下错误:使用单个可调用函数(例如
pd.DataFrame([0]).agg(np.mean))聚合单列数据帧时无法调换结果。修复了
DataFrame.dropna()会执行以下操作的错误:将空白
subset`(例如 :code:`[])视为它指定了所有列,而不是没有列。为标量
subset引发TypeError,而不是仅对该列进行筛选。为类型
pandas.Index的subset引发ValueError,而不是对索引中的列进行筛选。
在笔记本环境中使用动态透视表,创建限定范围的只读表以减少
TableNotFoundError。修复了以下错误:当 axis = 1 时,concat 数据帧或 series 对象来自同一个数据帧。
改进¶
通过消除不必要的联接和临时表创建,使用标量 x 值改进
np.where。使用联接展平透视,从而提高
get_dummies性能。
Snowpark 本地测试更新¶
新功能¶
添加了以下支持:修补
snowflake.snowpark.functions模块中不可用的函数。添加了对
snowflake.snowpark.functions.any_value的支持
错误修复¶
修复了以下错误:
Table.update无法处理VariantType、MapType和ArrayType数据类型。修复了以下错误:在
DataFrame.join中错误解析了列别名,导致从联接的 DataFrame 中选择列时出现错误。修复了以下错误:如果目标表的索引不是默认
RangeIndex,则Table.update和Table.merge可能会失败。
版本 1.24.0(2024 年 10 月 28 日)¶
新功能¶
更新了
Session类以保证线程安全。这允许在使用同一Session对象时,进行并行 DataFrame 转换、DataFrame 操作、UDF 和存储过程注册,以及并行文件上传。该功能在默认情况下处于禁用状态,可通过将
FEATURE_THREAD_SAFE_PYTHON_SESSION设置为True,为账户启用该功能。在多线程使用会话时,更新会话配置(例如更改数据库或架构)可能会导致意外行为。
启用后,从
DataFrame.queriesAPI 返回的某些内部创建的临时表名不确定,并且在执行 DataFrame 操作时可能会有所不同。这不会影响用户创建的显式临时表。
在
session.lineage.traceAPI 中添加了对“Service”域的支持。在
DataFrameWriter中添加了对以下方法的支持,以支持菊花链:optionoptionspartition_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 架构中结构化对象的字段名称大小写不一致的错误。
弃用¶
由于 Python 3.8 已达到其 生命周期结束 (https://devguide.python.org/versions/) ,在 Python 3.8 中使用 snowpark-python 时将触发弃用警告。有关更多详细信息,请参阅 Snowflake Python 运行时支持。
根据 Anaconda 的策略 (https://www.anaconda.com/blog/python-3-8-reaches-end-of-life),Snowpark 1.24.0 是支持 Python 3.8 的最后一个客户端和服务器版本。将现有 Python 3.8 对象升级到 Python 3.9 或更高版本。
Snowpark pandas API 更新¶
新功能¶
添加了对
np.subtract、np.multiply、np.divide和np.true_divide的支持。添加了对跟踪
__array_ufunc__的使用情况的支持。添加了对
np.float_power、np.mod、np.remainder、np.greater、np.greater_equal、np.less、np.less_equal、np.not_equal和np.equal的 numpy 兼容性支持。添加了对
np.log、np.log2和np.log10的 numpy 兼容性支持。添加了对
DataFrameGroupBy.bfill、SeriesGroupBy.bfill、DataFrameGroupBy.ffill和SeriesGroupBy.ffill的支持。在
Resampler中添加了对on参数的支持。在
value_counts()中添加了对 timedelta 输入的支持。添加了对应用 Snowpark Python 函数
snowflake_cortex_summarize的支持。添加了对
DataFrame.attrs和Series.attrs的支持。添加了对
DataFrame.style的支持。添加了对
np.full_like的 numpy 兼容性支持
改进¶
改进了行键为切片时为
head和iloc生成的 SQL 查询。改进了向
Series、DataFrame、Series.dt和DatetimeIndex中的tz_convert和tz_localize传入未知时区时的错误消息。为
Series、DataFrame、Series.dt和DatetimeIndex中的tz_convert和tz_localize改进了文档,以指定支持的时区格式。在使用 snowpark 函数时,添加了对
df.apply和series.apply`(以及 :code:`map和applymap)的额外 kwargs 支持。在第一个实参不是 pandas 对象的情况下,这允许 apply 和函数之间具有某种与位置无关的兼容性。改进了行键为标量时为
iloc和iat生成的 SQL 查询。移除了
iterrows中的所有联接。改进了
Series.map的文档以反映不支持的功能。添加了对
np.may_share_memory的支持,许多 scikit-learn 函数内部都在使用它。当使用 Snowpark pandas 对象调用时,此方法将始终返回 False。
错误修复¶
修复了以下错误:当输入包含 timedelta 列时,
DataFrame和Seriespct_change()会引发TypeError。修复了以下错误:
replace()有时会通过replace()错误地传播Timedelta类型。取而代之的是在Timedelta上为replace()引发NotImplementedError。修复了以下错误:
DataFrame和Seriesround()将为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方法的支持。添加了对以下某些情况的支持:使用
agg或aggregate聚合axis=0的Timedelta列。为
pd.merge_asof添加了对by、left_by、right_by、left_index和right_index的支持。添加了以下支持:将参数
include_describe传递到Session.query_history。添加了对
DatetimeIndex.mean和DatetimeIndex.std方法的支持。添加了对
Resampler.asfreq、Resampler.indices、Resampler.nunique和Resampler.quantile的支持。在
closed = "left"时添加了对resample频率W、ME、YE的支持。为
pairwise = False和 intwindow添加了对DataFrame.rolling.corr和Series.rolling.corr的支持。为
Rolling添加了对基于时间的字符串window和min_periods = None的支持。添加了对
DataFrameGroupBy.fillna和SeriesGroupBy.fillna的支持。添加了以下支持:使用惰性
Index对象作为data、index、和columns实参来构造Series和DataFrame对象。添加了以下支持:使用
DataFrame/Seriesdata中不存在的index和column值构造Series和DataFrame对象。添加了对 :code:`pd.read_sas`(使用原生 Pandas 进行处理)的支持。
添加了以下支持:将
rolling().count()和expanding().count()应用到Timedelta系列和列。在
pd.date_range和pd.bdate_range中添加了对tz的支持。添加了对
Series.items的支持。在
pd.to_datetime中添加了对errors="ignore"的支持。添加了对
DataFrame.tz_localize和Series.tz_localize的支持。添加了对
DataFrame.tz_convert和Series.tz_convert的支持。添加了以下支持:在
Series.map、Series.apply、DataFrame.apply和DataFrame.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_removeln
改进¶
改进了
Session.write_pandas的文档,使use_logical_type选项更加明确。支持将以下内容指定为
DataFrameWriter.save_as_table:enable_schema_evolutiondata_retention_timemax_data_extension_timechange_trackingcopy_grantsiceberg_config– 可以保存以下 Iceberg 配置选项的字典:external_volumecatalogbase_locationcatalog_syncstorage_serialization_policy
支持将以下内容指定为
DataFrameWriter.copy_into_table:iceberg_config– 可以保存以下 Iceberg 配置选项的字典:external_volumecatalogbase_locationcatalog_syncstorage_serialization_policy
支持将以下参数指定为
DataFrame.create_or_replace_dynamic_table:moderefresh_modeinitializeclustering_keysis_transientdata_retention_timemax_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。支持通过
copy、cache_result、shift、sort_index、assign、bfill、ffill、fillna、compare、diff、drop、dropna、duplicated、empty、equals、insert、isin、isna、items、iterrows、join、len、mask、melt、merge、nlargest、nsmallest、to_pandas跟踪Timedelta类型。支持通过
astype将非 timedelta 转换为 timedelta。将为不支持
Timedelta的其他方法引发NotImplementedError。支持减去两个时间戳以得到
Timedelta。支持使用
Timedelta数据列编制索引。支持添加或减去时间戳和
Timedelta。支持两个
Timedelta值之间的二进制算术。支持二进制算术以及
Timedelta值与数值之间的比较。支持惰性
TimedeltaIndex。支持
pd.to_timedelta。支持
GroupBy聚合min、max、mean、idxmax、idxmin、std、sum、median、count、any、all、size、nunique、head、tail、aggregate。支持
GroupBy筛选first和last。支持
TimedeltaIndex属性:days、seconds、microseconds和nanoseconds。支持
diff,带有axis=0和axis=1的时间戳列。支持
TimedeltaIndex方法:ceil、floor和round。支持
TimedeltaIndex.total_seconds方法。
添加了对索引算术和比较运算符的支持。
添加了对
Series.dt.round的支持。添加了
DatetimeIndex的文档页面。添加了对
Index.name、Index.names、Index.rename和Index.set_names的支持。添加了对
Index.__repr__的支持。添加了对
DatetimeIndex.month_name和DatetimeIndex.day_name的支持。添加了对
Series.dt.weekday、Series.dt.time和DatetimeIndex.time的支持。添加了对
Index.min和Index.max的支持。添加了对
pd.merge_asof的支持。添加了对
Series.dt.normalize和DatetimeIndex.normalize的支持。添加了对
Index.is_boolean、Index.is_integer、Index.is_floating、Index.is_numeric和Index.is_object的支持。添加了对
DatetimeIndex.round、DatetimeIndex.floor和DatetimeIndex.ceil的支持。添加了对
Series.dt.days_in_month和Series.dt.daysinmonth的支持。添加了对
DataFrameGroupBy.value_counts和SeriesGroupBy.value_counts的支持。添加了对
Series.is_monotonic_increasing和Series.is_monotonic_decreasing的支持。添加了对
Index.is_monotonic_increasing和Index.is_monotonic_decreasing的支持。添加了对
pd.crosstab的支持。添加了对
pd.bdate_range的支持,包含了对pd.date_range和pd.bdate_range的业务频率支持 (B、BME、BMS、BQE、BQS、BYE、BYS)。添加了对惰性
Index对象的支持,作为DataFrame.reindex和Series.reindex中的labels。添加了对
Series.dt.days、Series.dt.seconds、Series.dt.microseconds和Series.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.index或Series.index。因此,当新索引与当前Series或DataFrame对象长度不匹配时,不再引发ValueError。取而代之的是,当Series或DataFrame对象长于提供的索引时,Series或DataFrame的新索引将使用“extra”元素的NaN值填充。否则,忽略在提供的索引中的 extra 值。
错误修复¶
停止忽略
pd.Timedelta标量中的纳秒。修复了二进制运算树中的
AssertionError。修复了使用命名 Series 时
Series.dt.isocalendar中的错误修复了源自 DataFrame 列的 Series 对象的
inplace实参。修复了以下错误:
Series.reindex和DataFrame.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.traceAPI 中添加了对列沿袭的支持。添加了以下支持:通过
INFER_SCHEMA_OPTIONS将INFER_SCHEMA选项传递到DataFrameReader。添加了以下支持:将
parameters参数传递到Column.rlike和Column.regexp。添加了以下支持:在不再引用(即垃圾回收)DataFrame 时,自动清理当前会话中
df.cache_result()创建的临时表。它仍然是一项实验性功能,默认情况下未启用。可以将session.auto_clean_up_temp_table_enabled设置为True,以启用该功能。为
snowflake.snowpark.functions.to_date的fmt参数添加了对字符串字面量的支持。
错误修复¶
修复了以下错误:为选择
*列而生成的 SQL 有不正确的子查询。修复了
DataFrame.to_pandas_batches中的以下错误:如果因隔离级别错误而对 pandas DataFrame 进行特定转换,迭代器可能会引发错误。修复了
DataFrame.lineage.trace中的错误,以正确拆分引用的功能视图的名称和版本。修复了
Column.isin中在传递空列表时导致 SQL 生成无效的错误。修复了以下错误:在使用列表类项目设置单元格时无法引发
NotImplementedError。
Snowpark 本地测试更新¶
新功能¶
添加了对以下 APIs 的支持:
snowflake.snowpark.functionsrankdense_rankpercent_rankcume_distntiledatediffarray_agg
snowflake.snowpark.column.Column.within_group
添加了以下支持:解析模拟计划的正则表达式语句中的标志。这与上述
rlike和regexp变更保持一致。
错误修复¶
修复了以下错误:窗口函数
LEAD和LAG没有合理处理选项ignore_nulls。修复了以下错误:在插入表格合并操作期间,未将值填充到结果 DataFrame。
改进¶
修复了关于整数索引的 pandas
FutureWarning。
Snowpark pandas API 更新¶
新功能¶
添加了对
DataFrame.backfill、DataFrame.bfill、Series.backfill和Series.bfill的支持。添加了对采用默认参数的
DataFrame.compare和Series.compare的支持。添加了对
Series.dt.microsecond和Series.dt.nanosecond的支持。添加了对
Index.is_unique和Index.has_duplicates的支持。添加了对
Index.equals的支持。添加了对
Index.value_counts的支持。添加了对
Series.dt.day_name和Series.dt.month_name的支持。添加了对 Index 索引的支持,例如
df.index[:10]。添加了对
DataFrame.unstack和Series.unstack的支持。添加了对
DataFrame.asfreq和Series.asfreq的支持。添加了对
Series.dt.is_month_start和Series.dt.is_month_end的支持。添加了对
Index.all和Index.any的支持。添加了对
Series.dt.is_year_start和Series.dt.is_year_end的支持。添加了对
Series.dt.is_quarter_start和Series.dt.is_quarter_end的支持。添加了对懒惰
DatetimeIndex的支持。添加了对
Series.argmax和Series.argmin的支持。添加了对
Series.dt.is_leap_year的支持。添加了对
DataFrame.items的支持。添加了对
Series.dt.floor和Series.dt.ceil的支持。添加了对
Index.reindex的支持。添加了对
DatetimeIndex属性的支持:year、month、day、hour、minute、second、microsecond、nanosecond、date、dayofyear、day_of_year、dayofweek、day_of_week、weekday、quarter、is_month_start、is_month_end、is_quarter_start、is_quarter_end、is_year_start、is_year_end和is_leap_year。添加了对
Resampler.fillna和Resampler.bfill的支持。添加了对
Timedelta类型的有限支持,包括创建Timedelta列和to_pandas。添加了对
Index.argmax和Index.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_duplicates和DataFrame.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.functionsrandom
注册模拟函数时向
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.nlargest和DataFrame.nsmallestDataFrame.assignDataFrame.stackDataFrame.pivotDataFrame.to_csvDataFrame.corrDataFrame.corrDataFrame.equalsDataFrame.reindexDataFrame.at和DataFrame.iat
Series
Series.nlargest和Series.nsmallestSeries.at和Series.iatSeries.dt.isocalendarSeries.equalsSeries.reindexSeries.to_csvSeries.case_when,除非条件或替换可调用series.plot(),数据物化到本地客户端
GroupBy
DataFrameGroupBy.all和DataFrameGroupBy.anyDataFrameGroupBy和SeriesGroupBy聚合first和lastDataFrameGroupBy.get_groupSeriesGroupBy.all和SeriesGroupBy.any
通用
pd.pivot:code:`read_excel`(使用本地 pandas 进行处理)
df.plot(),数据物化到本地客户端
扩展了现有 APIs,如下所示:
在
DataFrame.sample和Series.sample中添加了对replace和frac > 1的支持。添加了对
Series.str.translate的部分支持,其中table的值为单代码点字符串。在
fillna中使用method参数时,添加了对limit参数的支持。
为
Index及其 APIs 添加了文档页面。
错误修复¶
修复了标量
other为字面量 0 时使用 np.where 和 df.where 时出现的问题。修复了在使用
dtype=np.uint64转换为 Snowpark pandasDataFrame或Series时关于精度损失的错误。修复了以下错误:当
index和columns在pivot_table期间包含 DataFrame 中所有列时,values设置为index。
改进¶
添加了对
Index.copy()的支持。添加了对 Index APIs 的支持:
dtype、valuesitem()、tolist()、to_series()和to_frame()。扩展对 DataFrames 的支持,
pd.pivot_table和DataFrame.pivot_table中不包含行。在
DataFrame.sort_index和Series.sort_index中添加了对inplace参数的支持。
版本 1.19.0(2024 年 6 月 25 日)¶
1.19.0 版 Snowpark Library for Python 引入了一些新功能。
新功能¶
添加了对
to_boolean函数的支持。为
Index及其 APIs 添加了文档页面。
错误修复¶
修复了以下错误:在任务中运行时,具有表返回类型的 Python 存储过程会失败。
修复了以下错误:当 DataFrame 有 500 多列时,
df.dropna因RecursionError: 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.replace、DataFrame.dropna和模拟函数iff的实施中添加了对类型强制的支持。
Snowpark pandas API 更新¶
新功能¶
添加了对
DataFrame.pct_change和Series.pct_change的支持,不包含freq和limit参数。添加了对
Series.str.get的支持。添加了对
Series.dt.dayofweek、Series.dt.day_of_week、Series.dt.dayofyear和Series.dt.day_of_year的支持。添加了对
Series.str.__getitem__ (Series.str[...])的支持。添加了对
Series.str.lstrip和Series.str.rstrip的支持。添加了对
DataFrameGroupby.size和SeriesGroupby.size的支持。为
axis=0的聚合count、sum、min、max、mean、std和var添加了对DataFrame.expanding和Series.expanding的支持。为
axis=0的聚合计数添加了对DataFrame.rolling和Series.rolling的支持。添加了对
Series.str.match的支持。为聚合大小添加了对
DataFrame.resample和Series.resample的支持。
错误修复¶
修复了会导致
GroupBy.aggregate列的输出不正确排序的错误。修复了以下错误:对具有区分
dtypes的重复列的帧调用DataFrame.describe可能会导致错误或错误结果。修复了
DataFrame.rolling和Series.rolling中的错误,因此window=0现在抛出NotImplementedError,而不是ValueError
改进¶
添加了对具有
axis=0的DataFrame.aggregate和Series.aggregate中的命名聚合的支持。pd.read_csv使用原生 pandas CSV 解析器读取数据,然后使用 parquet 将数据上传到 Snowflake。这样会启用read_csv支持的大多数参数,包括日期解析和数字转换。通过 parquet 上传的速度大约是通过 CSV 上传的两倍。最初的工作是直接在 Snowpark pandas 中支持
pd.Index。正在积极开发对作为 Snowpark pandas 的一流组件的pd.Index的支持。添加了惰性索引构造函数并支持
len、shape、size、empty、to_pandas()和names。对于df.index,Snowpark pandas 会创建惰性索引对象。对于
df.columns,Snowpark pandas 支持非惰性版本的Index,因为数据已在本地存储。
版本 1.18.0(2024 年 5 月 28 日)¶
1.18.0 版 Snowpark 库推出了一些新功能。
新功能¶
添加了
DataFrame.cache_result和Series.cache_result方法,以便用户在会话期间将DataFrame和Series对象保存到临时表,从而缩短后续操作的延迟。
改进¶
添加了对
DataFrame.pivot_table的支持,不包含index参数,包含margins参数。更新了
DataFrame.shift、Series.shift、DataFrameGroupBy.shift和SeriesGroupBy.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_agg和DataFrame.analytics.cumulative_agg_agg的支持。在 UDF 和存储过程注册期间添加了对
if_not_exists参数的支持。
错误修复¶
修复了处理时间格式时无法正确处理小数第二部分的错误。
修复了导致对
*的函数调用失败的错误。修复了阻止创建
map和struct类型对象的错误。修复了以下错误:函数
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_permanent和anonymous选项添加了相应的错误消息,以更清楚地表明尚不支持这些功能。现在,使用不支持的选项和值的文件读取操作会引发
NotImplementedError,而不是警告和不明确的错误信息。
版本 1.17.0(2024 年 5 月 21 日)¶
1.17.0 版 Snowpark 库推出了一些新功能。
新功能¶
支持使用下面列出的函数为表和视图添加注释:
DataFrameWriter.save_as_tableDataFrame.create_or_replace_viewDataFrame.create_or_replace_temp_viewDataFrame.create_or_replace_dynamic_table
改进¶
改进了错误消息,提醒用户在读取 CSV 文件时设置
{"infer_schema": True},而不指定其架构。
本地测试更新¶
新功能¶
在模拟函数
to_timestamp_ltz、to_timestamp_ntz、to_timestamp_tz和to_timestamp中添加了对NumericType和VariantType的支持。在模拟函数
to_char中添加了对DecimalType、BinaryType、ArrayType、MapType、TimestampType、DateType和TimeType的支持。添加了对以下 APIs 的支持:
snowflake.snowpark.functions.to_varcharsnowflake.snowpark.DataFrame.pivotsnowflake.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]返回大写标识符。修复了以下错误:
substr和substring无法处理从零开始的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中添加了对StringType、TimestampType和VariantType的支持。添加了对以下 APIs 的支持:
snowflake.snowpark.functions:getconcatconcat_ws
错误修复¶
修复了导致
NaT和NaN无法识别的错误。修复了以下错误:在推断架构时,单引号被添加到已有单引号的暂存区文件。
修复了以下错误:
DataFrameReader.csv无法处理包含分隔符的引号值。修复了以下错误:当算数计算中存在
None值,输出应保持None,而不是math.nan。修复了函数
sum和covar_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.jsonDataFrame.write.csvDataFrame.write.parquet
在
DataFrame和DataFrameWriter中为动作函数添加了使用开放遥测 APIs 的分布式跟踪。snowflake.snowpark.DataFrame:collectcollect_nowaitto_pandascountshow
snowflake.snowpark.DataFrameWriter:save_as_table
向
snowflake.snowpark.Session.file.get和snowflake.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.putfile.put_streamfile.getfile.get_streamread.jsonadd_importremove_importget_importsclear_importsadd_packagesadd_requirementsclear_packagesremove_packageudf.registerudf.register_from_filesproc.registersproc.register_from_file
snowflake.snowpark.functionscurrent_databasecurrent_sessiondate_truncobject_constructobject_construct_keep_nullpowsqrtudfsproc
在模拟函数
to_time中添加了对StringType、TimestampType和VariantType的支持。
错误修复¶
修复了以下问题:常量函数的列填充空值。
修复了
to_object、to_array和to_binary,以更好地处理空值输入。修复了以下问题:时间戳数据比较无法处理 2262 年之后的年份。
修复了以下问题:
Session.builder.getOrCreate应返回创建的模拟会话。
版本 1.14.0(2024 年 3 月 20 日)¶
1.14.0 版 Snowpark 库推出了一些新功能。
新功能¶
添加了以下支持:使用
process方法创建矢量化 UDTFs。添加了对 DataFrame 函数的支持:
to_timestamp_ltzto_timestamp_ntzto_timestamp_tzlocate
添加了对 ASOF JOIN 类型的支持。
添加了对以下本地测试 APIs 的支持:
snowflake.snowpark.functions:
to_doubleto_timestampto_timestamp_ltzto_timestamp_ntzto_timestamp_tzgreatestleastconvert_timezonedateadddate_part
snowflake.snowpark.Session:
get_current_accountget_current_warehouseget_current_roleuse_schemause_warehouseuse_databaseuse_role
改进¶
将遥测添加到了本地测试。
改进了
DataFrameReader的错误消息,在读取不存在的路径或路径下没有文件时引发FileNotFound错误。
错误修复¶
修复了
SnowflakePlanBuilder中的错误:save_as_table没有正确筛选名称以$开头并后跟一个数字的列。修复了以下错误:在解析导入和包时语句参数可能不起作用。
修复了本地测试中的错误:
LEFT ANTI 和 LEFT SEMI 联接删除具有 null 值的行。
当指定可选参数
field_optionally_enclosed_by时,DataFrameReader.csv错误地解析数据。当
pattern是Column时,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_timestampcurrent_datecurrent_timestrip_null_valueupperlowerlengthinitcap
改进¶
添加了解释器关闭时的清理逻辑,以关闭所有活动会话。
错误修复¶
修复了
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 值的IntegerType列 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_integrations和secrets,以便与外部访问集成。添加了新方法
Session.append_query_tag,这允许将额外标签附加为逗号分隔的值,从而将其添加到当前查询标签。添加了新方法
Session.update_query_tag,允许更新到 JSON 编码的字典查询标签。在检测到令牌过期时,
SessionBuilder.getOrCreate现在将尝试替换返回的单例。在
snowflake.snowpark.functions中添加了以下函数:array_exceptcreate_mapsign/signum
向
DataFrame.analytics添加了以下函数:在
DataFrame.analytics中添加了moving_agg函数,以启用具有多个窗口大小的移动聚合,例如总和和平均值。在
DataFrame.analytics中添加了cumulative_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。
修复了以下错误:当 DataFrame 是从另一个具有别名列的 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.
修复了
Session.create_dataframe中的错误:布尔类型不考虑架构中不可为 null 的字段。请注意,仅当用户具有创建临时表的权限时,此修复才有效。修复了 SQL 简化器中的错误:与
limit()结合使用时,session.sql中的非 select 语句删除了 SQL 查询。修复了以下错误:当会话参数
ERROR_ON_NONDETERMINISTIC_UPDATE为 Ture 时引发异常。