Snowpark Library for Pythonの2025年リリースノート¶
この記事には、 Snowpark Library for Python のリリースノートが含まれています。また、該当する場合は以下が含まれます。
動作の変更
新機能
顧客向けバグ修正
Snowflake は、 Snowpark Library for Python の更新にセマンティックバージョニングを使用します。
ドキュメントについては、 Python用Snowpark開発者ガイド をご参照ください。
警告
Python 3.8が サポート終了 に達したため、Python 3.8でSnowpark-pythonを使用する際に非推奨の警告がトリガーされます。詳細については、 Snowflake Pythonランタイムのサポート をご参照ください。Snowpark Python 1.24.0は、 Anacondaのポリシー に従い、Python 3.8をサポートする最後のクライアントとサーバーのバージョンになります。既存のPython 3.8オブジェクトをPython 3.9以上にアップグレードしてください。
バージョン1.32.0(2025-05-15)¶
改善¶
Snowflakeシステムプロシージャを呼び出しても、プロシージャの戻り値タイプをチェックする追加の
describe procedure
呼び出しは起動しません。ステージURLと
FILE
データタイプを持つSession.create_dataframe()
に対するサポートが追加されました。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
のサポートを追加しました。
バグ修正¶
外部データベース内のユニコードまたは二重引用符で囲まれた列名が正しく引用されないためにエラーが発生していた
DataFrameWriter.dbapi
(プライベートプレビュー)のバグを修正しました。ネストされた
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[...]
)のdict値に対するサポートを追加しました。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-04-24)¶
新機能¶
StoredProcedure.register():code:
のexecute_as
引数のrestricted caller
パーミッションに対するサポートを追加しました。DataFrame.to_pandas()
における非選択ステートメントに対するサポートを追加しました。Session.add_packages
、Session.add_requirements
、Session.get_packages
、Session.remove_package
、Session.clear_packages
にartifact_repository
パラメーターのサポートを追加しました。session.read.option('rowTag', <tag_name>).xml(<stage_file_path>)
で行タグを使用してXMLファイルを読み込むサポートを追加しました(実験的)。XMLの各記録が個別の行として抽出されます。
その記録内の各フィールドが
VARIANT
タイプの独立した列になり、col(a.b.c)
などのドット記法でさらにクエリを実行できるようになります。
DataFrameReader.dbapi
(PrPr)に更新を追加しました。取り込んだ複数のデータを1つのParquetファイルにマージしてパフォーマンスを最適化するための
fetch_merge_count
パラメーターを追加しました。Databricksに対するサポートを追加しました。
Snowflake UDTFによるインジェストに対するサポートを追加しました。
functions.py
でのAI対応関数のサポートを追加しました(プライベートプレビュー)。prompt
ai_filter
(prompt()
関数と画像ファイルに対するサポートを追加し、第2引数名を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を作成する際に発行されるdescribeクエリの数を減らしました。DataFrameAnalyticsFunctions.time_series_agg()
のパフォーマンスと精度を向上させました。
バグ修正¶
ピボット列と集計列が同じ場合の
DataFrame.group_by().pivot().agg
のバグを修正しました。create_connection
が未対応のドライバータイプの接続オブジェクトを返した場合にTypeError
が発生するDataFrameReader.dbapi
(PrPr)のバグを修正しました。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
がnull
ではなくIndexError
を返すバグを修正しました。ローカルテストにおいて、
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
のサポートを追加しました。集計の
max
、mean
、median
、min
、sum
に対するDataFrame.groupby.resample
のサポートを追加しました。次を使用したステージファイルの読み込み対するサポートを追加しました。
pd.read_excel
pd.read_html
pd.read_pickle
pd.read_sas
pd.read_xml
DataFrame.to_iceberg
およびSeries.to_iceberg
のサポートを追加しました。Series.str.len
でのdict値のサポートを追加しました。
改善¶
高価なピボットステップを回避することで、
DataFrame.groupby.apply
とSeries.groupby.apply
のパフォーマンスを向上させました。より良いエンジン切り替えを可能にするため、
OrderedDataFrame
に行数の上限推定値を追加しました。その結果、クエリ数が増加する可能性があります。relaxed_ordering
パラメーター名をenforce_ordering
に変更しました(pd.read_snowflake
)。また、新しいデフォルト値はenforce_ordering=False
になり、以前のデフォルト値relaxed_ordering=False
とは逆の効果になります。
バグ修正¶
icebergテーブルと
enforce_ordering=True
の読み込み時におけるpd.read_snowflake
のバグを修正しました。
バージョン1.30.0(2025-03-27)¶
新機能¶
relaxed_ordering
パラメーターを採用することで、Dataframe.to_snowpark_pandas
における緩和された一貫性と順序保証のサポートを追加しました。DataFrameReader.dbapi
(プレビュー)でsession_init_statement
パラメーターに文字列のリストを指定できるようになり、セッションの初期化中に複数のSQLステートメントを実行できるようになります。
改善¶
Dataframe.stat.sample_by
のクエリ生成を改善しました。fractions
の各キーに対してUNION ALLサブクエリを作成する旧方式と比較して、大規模な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
と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_label
の場合、DataFrame.to_snowflake
およびSeries.to_snowflake
におけるindex=True
の欠落に対する処理が改善されました。ValueError
を発する代わりに、インデックス列にシステム定義のラベルが使用されます。関数名がサポートされていない場合の
groupby
、DataFrame
、Series.agg
のエラーメッセージを改善しました。
Snowparkローカルテストの更新¶
改善¶
QUOTED_IDENTIFIERS_IGNORE_CASE
がセットされていることが判明するたびに警告を発し、ユーザーに設定解除が求められます。index_label
の場合、DataFrame.to_snowflake
およびSeries.to_snowflake
におけるindex=True
の欠落に対する処理が改善されました。ValueError
を発する代わりに、インデックス列にシステム定義のラベルが使用されます。関数名がサポートされていない場合の
groupby or DataFrame or Series.agg
のエラーメッセージを改善しました。
バージョン1.29.1(2025-03-12)¶
バグ修正¶
ストアドプロシージャとSnowbooksでの使用を妨げる
DataFrameReader.dbapi
(プライベートプレビュー)のバグを修正しました。
バージョン1.29.0(2025-03-05)¶
新機能¶
functions.py
でのAI対応関数のサポートを追加しました(プライベートプレビュー)。ai_filter
ai_agg
summarize_agg
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
Artifact Repository(プライベートプレビュー)を使用したPyPiからのサードパーティパッケージのインポートに対するサポートを追加しました。
ストアドプロシージャやユーザー定義関数を登録する際には、キーワード引数
artifact_repository
とartifact_repository_packages
を使用して、それぞれアーティファクトリポジトリとパッケージを指定します。サポート対象のAPIsは以下の通りです。
Session.sproc.register
Session.udf.register
Session.udaf.register
Session.udtf.register
functions.sproc
functions.udf
functions.udaf
functions.udtf
functions.pandas_udf
functions.pandas_udtf
改善¶
ストアドプロシージャの登録時に、
snowflake-snowpark-python
パッケージの互換性に関するバージョン検証警告が改善されました。メジャーバージョンとマイナーバージョンが一致しない場合にのみ警告が発せられ、バグ修正バージョンの違いについては警告を発さなくなります。cloudpickleの依存関係を改善し、以前のバージョンに加えて
cloudpickle==3.0.0
にも対応するようになります。
バグ修正¶
スレッドセーフセッションが無効の場合に、多数の値を持つDataframeを作成すると
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の可読性を改善しました。SnowparkオブジェクトでUDFsを使用するすべてのpandas関数のエラーメッセージを改善しました。
バグ修正¶
Series.rename_axis
でAttributeError
が発生するバグを修正しました。
pd.get_dummies
がNULL/NaNの値をデフォルトで無視しなかったバグを修正しました。
pd.get_dummies
を繰り返し呼び出すと「列名の重複エラー」が発生するバグを修正しました。
pd.get_dummies
で、列のリストを渡すと、出力DataFrameに誤った列ラベルが生成されるバグを修正しました。
pd.get_dummies
を更新し、intではなくbool値を返すようにしました。
Snowparkローカルテストの更新¶
新機能¶
range_between
ウィンドウ関数にリテラル値のサポートを追加しました。
バージョン1.28.0(2025-02-20)¶
新機能¶
functions.py
で以下の関数のサポートを追加しました。normal
randn
Dataframe.union_by_name
とDataframe.union_all_by_name
にallow_missing_columns
パラメーターのサポートを追加しました。
改善¶
競合を避けるためにオブジェクト名のランダム生成を改善しました。
Dataframe.distinct
のクエリ生成を改善し、SELECTの代わりにSELECT DISTINCTを生成し、GROUP BYの全列を生成するようにしました。この機能を無効にするには、session.conf.set("use_simplified_query_generation", False)
をセットします。
非推奨¶
Snowpark Python関数
snowflake_cortex_summarize
が廃止予定になりました。ユーザーはsnowflake-ml-python
をインストールし、代わりにsnowflake.cortex.summarize
関数を使用することができます。Snowpark Python関数
snowflake_cortex_sentiment
が廃止予定になりました。ユーザーはsnowflake-ml-python
をインストールし、代わりにsnowflake.cortex.sentiment
関数を使用することができます。
バグ修正¶
複数のクエリを生成するDataFramesにおいて、セッションレベルのクエリタグがスタックトレースによって上書きされるバグを修正しました。これで、
session.conf.set("collect_stacktrace_in_query_tag", True)
の場合、クエリタグはスタックトレースにのみセットされるようになります。Session._write_pandas
で、Snowpark pandasオブジェクトを書き込む際にSession._write_modin_pandas_helper
にuse_logical_type
のパラメーターを誤って渡していたバグを修正しました。SQLオプション生成において、複数の値が正しくフォーマットされないバグを修正しました。
Session.catalog
で、データベースまたはスキーマの空文字列が正しく処理されず、誤ったSQLステートメントを生成していたバグを修正しました。
実験的機能¶
Snowflakeテーブルへのpyarrowテーブルの書き込みに対するサポートを追加しました。
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-02-05)¶
新機能¶
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
において、複数列のサポートを追加しました。DataFrame.with_column
とDataFrame.with_columns
で元の列の並び順を維持するためのオプションkeep_column_order
を追加しました。StructType
列でのフィールドの名前変更や追加を可能にするオプションを列キャストに追加しました。ArrayType
にcontains_null parameter
のサポートを追加しました。ステージからファイルを読み込んで作成された DataFrame から
DataFrame.create_or_replace_temp_view
経由で仮ビューを作成する機能を追加しました。MapType
へのvalue_contains_null
パラメーターのサポートを追加しました。現在の環境がインタラクティブなものであるかどうかを示すテレメトリーにインタラクティブを追加しました。
現在のバージョンから/で始まるファイルパスを読み込めるように、Native Appsで
session.file.get
を許可します。DataFrame.pivot
以降、複数の集計関数をサポートするようになりました。
実験的機能¶
Snowflakeオブジェクトを管理する
Session.catalog
クラスを追加しました。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: ゼロ埋めした10進数としての月の日付。
%m: ゼロ埋めした10進数としての月。
%Y: 世紀を10進数で表した年。
%H: ゼロ埋めした10進数としての時間(24時間制)。
%M: ゼロ埋めした10進数としての分。
%S: ゼロ埋めした10進数としての秒。
%f: マイクロ秒を10進数で表し、6桁にゼロ埋め。
%j: ゼロ埋めした10進数としての年の日付。
%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
のサポートを追加しました。"count"
、"median"
、np.median
、"skew"
、"std"
、np.std
"var"
、およびnp.var
のpd.pivot_table()
、DataFrame.pivot_table()
、およびpd.crosstab()
における集計のサポートを追加しました。
改善¶
可能な場合、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
を追加しました。