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記録を処理するための異なるモードに対するサポートが追加されました。現在、 PERMISSIVEDROPMALFORMEDFAILFAST がサポート対象になります。

  • 指定された ROWTAG がファイル内に見つからない場合のXMLリーダーのエラーメッセージが改善されました。

  • Dataframe.drop のクエリ生成が改善されました。 SELECT * EXCLUDE () を使用してドロップされた列を除外できるようになります。この機能を有効にするには、 session.conf.set("use_simplified_query_generation", True) を設定します。

  • StructType.from_jsonVariantType のサポートを追加しました。

バグ修正

  • 外部データベース内のユニコードまたは二重引用符で囲まれた列名が正しく引用されないためにエラーが発生していた DataFrameWriter.dbapi (プライベートプレビュー)のバグを修正しました。

  • ネストされた OBJECT データの名前付きフィールドにスペースが含まれるとエラーになるバグを修正しました。

Snowparkローカルテストの更新

バグ修正

  • ソート方向を無視する snowflake.snowpark.functions.rank のバグを修正しました。

  • フィルターにかけたデータに対して不正な結果を引き起こす snowflake.snowpark.functions.to_timestamp_* のバグを修正しました。

Snowpark pandas API の更新

新機能

  • Series.str.getSeries.str.sliceSeries.str.__getitem__Series.str[...])のdict値に対するサポートを追加しました。

  • DataFrame.to_html のサポートを追加しました。

  • DataFrame.to_string および Series.to_string のサポートを追加しました。

  • pd.read_csv を使用してS3バケットからファイルを読み込むサポートを追加しました。

改善

  • iceberg_configDataFrame.to_icebergSeries.to_iceberg の必須パラメーターになります。

バージョン1.31.0(2025-04-24)

新機能

  • StoredProcedure.register():code:execute_as 引数の restricted caller パーミッションに対するサポートを追加しました。

  • DataFrame.to_pandas() における非選択ステートメントに対するサポートを追加しました。

  • Session.add_packagesSession.add_requirementsSession.get_packagesSession.remove_packageSession.clear_packagesartifact_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_filterprompt() 関数と画像ファイルに対するサポートを追加し、第2引数名を expr から file に変更)

    • ai_classify

改善

  • DataFrame.to_snowpark_pandasrelaxed_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.getItemsnowpark.snowflake.functions.getnull ではなく 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 のサポートを追加しました。

  • 集計の maxmeanmedianminsum に対する 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.applySeries.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_decimalTrue に設定されている場合、 DataFrame.fillnaDataFrame.replace の両方で、 intfloatDecimal 列に入れられるようになります。

  • 一般公開に伴い、次に挙げる 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 のデフォルト値がサポートされます。 start または start_day の場合は origin がサポートされます。

  • 新しいパラメーター relaxed_ordering を導入することで、 pd.read_snowflake で、名前付きデータソース(テーブルやビューなど)とクエリデータソースの両方に対して、緩和された一貫性と順序保証をサポートするようになりました。

改善

  • QUOTED_IDENTIFIERS_IGNORE_CASE がセットされていることが判明するたびに警告を発し、ユーザーに設定解除が求められます。

  • index_label の場合、 DataFrame.to_snowflake および Series.to_snowflake における index=True の欠落に対する処理が改善されました。 ValueError を発する代わりに、インデックス列にシステム定義のラベルが使用されます。

  • 関数名がサポートされていない場合の groupbyDataFrameSeries.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_repositoryartifact_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_snowflakeDataFrame.to_snowflakeSeries.to_snowflake のエラーメッセージを改善しました。

  • pd.to_snowflakeDataFrame.to_snowflakeSeries.to_snowflakeif_exists パラメーターのdocstringの可読性を改善しました。

  • SnowparkオブジェクトでUDFsを使用するすべてのpandas関数のエラーメッセージを改善しました。

バグ修正

  • Series.rename_axisAttributeError が発生するバグを修正しました。

  • 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_nameDataframe.union_all_by_nameallow_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_helperuse_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_formatdatetime_formattimestamp_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_columnDataFrame.with_columns で元の列の並び順を維持するためのオプション keep_column_order を追加しました。

  • StructType 列でのフィールドの名前変更や追加を可能にするオプションを列キャストに追加しました。

  • ArrayTypecontains_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_jsontzinfo を含む 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.aggSeriesGroupBy.aggfirstlast のサポートを追加しました。

  • Index.drop_duplicates のサポートを追加しました。

  • "count""median"np.median"skew""std"np.std "var"、および np.varpd.pivot_table()DataFrame.pivot_table()、および pd.crosstab() における集計のサポートを追加しました。

改善

  • 可能な場合、numpy関数をSnowpark関数にマッピングすることで、 DataFrame.mapSeries.applySeries.map のメソッドのパフォーマンスを改善しました。

  • DataFrame.map のドキュメントを追加しました。

  • 可能な場合、numpy関数をSnowpark関数にマッピングすることで、 DataFrame.apply のパフォーマンスを改善しました。

  • Snowparkのpandasとscikit-learnの相互運用性の範囲に関するドキュメントを追加しました。

  • 型ヒントが提供されていない場合、 Series.mapSeries.applyDataFrame.map の関数の戻り値の型を推測します。

  • 交換プロトコルの呼び出し含むメソッド呼び出しをカウントするテレメトリーに call_count を追加しました。