Python用Snowparkライブラリの2024年リリースノート

この記事には、 Snowpark Library for Python のリリースノートが含まれています。また、該当する場合は以下が含まれます。

  • 動作の変更

  • 新機能

  • 顧客向けバグ修正

Snowflake は、 Snowpark Library for Python の更新にセマンティックバージョニングを使用します。

ドキュメントについては、 Python用Snowpark開発者ガイド をご参照ください。

バージョン1.23.0(2024-10-09)

新機能

  • snowflake.snowpark.functions に以下の新しい関数を追加しました。

    • make_interval

  • 列順が TIMESTAMP または DATE 型の場合に、 Window.range_between() Snowflakeインターバル定数を使用できるようにサポートを追加しました。

  • ファイル書き込みのサポートを追加しました。この機能は現在プライベートプレビュー中です。

  • QueryRecordthread_id を追加し、クエリ履歴を送信するスレッドIDを追跡できるようにしました。

  • Session.stored_procedure_profiler のサポートを追加しました。

バグ修正

  • ストアドプロシージャまたは UDxF を型ヒントで登録すると、関数からデフォルト値を読み込もうとしたときに「NoneType has no len()」という警告が出るバグを修正しました。

Snowpark Pandas API の更新

新機能

  • TimedeltaIndex.mean メソッドのサポートが追加されました。

  • axis=0Timedelta 列を agg または aggregate で集計する場合の一部サポートを追加しました。

  • pd.merge_asof 向けに byleft_byright_byleft_index、 および right_index のサポートを追加しました。

  • Session.query_history にパラメーター include_describe を渡すためのサポートを追加しました。

  • DatetimeIndex.meanDatetimeIndex.std メソッドのサポートを追加しました。

  • Resampler.asfreqResampler.indicesResampler.nunique、 および Resampler.quantile のサポートを追加しました。

  • closed = "left" を使用した resample 頻度 WMEYE のサポートを追加しました。

  • pairwise = False とint windowDataFrame.rolling.corrSeries.rolling.corr のサポートを追加しました。

  • Rolling に文字列時間ベースの windowmin_periods = None のサポートを追加しました。

  • DataFrameGroupBy.fillna および SeriesGroupBy.fillna のサポートを追加しました。

  • 遅延 Series オブジェクトを使用した DataFrameIndex オブジェクトを dataindex、および columns 引数として構築するためのサポートを追加しました。

  • DataFrame/Series data に存在しない indexcolumn の値を使用して SeriesDataFrame オブジェクトを構築するためのサポートを追加しました。

  • pd.read_sas のサポートを追加しました(処理にネイティブpandasを使用)。

  • rolling().count()expanding().count()Timedelta 系列と列に適用するためのサポートを追加しました。

  • pd.bdate_rangepd.date_range の両方で tz のサポートを追加しました。

  • Series.items のサポートを追加しました。

  • pd.to_datetime での errors="ignore" のサポートを追加しました。

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

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

  • SnowparkのPython関数(例: sin)を Series.mapSeries.applyDataFrame.apply、 および DataFrame.applymap で適用するサポートを追加しました。

改善

  • TIMESTAMP_TZ 型の元のタイムゾーンオフセットを維持するように to_pandas を改良しました。

  • TIMESTAMP_TZ 型の dtype の結果を改善し、正しいタイムゾーンオフセットを表示するようにしました。

  • TIMESTAMP_LTZ 型の dtype の結果を改善し、正しいタイムゾーンを表示するようにしました。

  • groupby集計で numeric_only にブール値以外を渡したときのエラーメッセージを改善しました。

  • sort_values の並べ替えアルゴリズムに関する不要な警告を削除しました。

  • SCOPED オブジェクトを内部で仮テーブルを作成するために使用します。SCOPED オブジェクトは、sproc内で作成された場合はsprocスコープになり、それ以外の場合はセッションスコープになり、スコープの終了時にオブジェクトは自動的にクリーニングされます。

  • 予想外の遅さのマテリアライゼーションにつながる操作に対する警告メッセージを改善しました。

  • Series.applyconvert_dtype に関する不要な警告メッセージを削除しました。

バグ修正

  • Series/DataFrame から作成された Index オブジェクトが、元の Series/DataFrame にインプレース更新が適用された後、 Series/DataFrame のインデックス名が誤って更新されるバグを修正しました。

  • Timedelta 列を印刷する際に表示されることがあった無用な SettingWithCopyWarning を抑制しました。

  • 他の Series オブジェクトから派生した Series オブジェクトの inplace 引数を修正しました。

  • 系列名がインデックス列名と重なる場合、 Series.sort_values に失敗するバグを修正しました。

  • データフレームをトランスポーズすると、 Timedelta インデックスレベルが整数列レベルにマップされるバグを修正しました。

  • タイムデルタ列の Resampler メソッドが整数の結果を生成するバグを修正しました。

  • pd.to_numeric()Timedelta の入力を整数に変換せずに Timedelta のままにするバグを修正しました。

  • DataFrame の単一行または複数行にSeries値を設定する際に設定される loc を修正しました。

バージョン1.22.1(2024-09-11)

  • これは1.22.0の再リリースです。リリース内容の詳細については、1.22.0リリースノートをご参照ください。

バージョン1.22.0(2024-09-10)

新機能

  • snowflake.snowpark.functions に以下の新しい関数を追加しました。

    • array_remove

    • ln

改善

  • use_logical_type オプションをより明示することにより、 Session.write_pandas のドキュメントを改善しました。

  • 以下を 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

バグ修正

  • 外部で定義されたファイルフォーマットで PARSE_HEADER = True を設定する際にエラーが発生する session.read.csv のバグを修正しました。

  • セット操作からのクエリ生成において、子クエリが共通のサブクエリを持つ場合に重複したクエリが生成されるバグを修正しました。

  • データベースやスキーマを切り替えた後に存在しないステージを参照していた 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は、サポートされていない Timedelta ユースケースに対して NotImplementedError を発生します。

    • copycache_resultshiftsort_indexassignbfillffillfillnacomparediffdropdropnaduplicatedemptyequalsinsertisinisnaitemsiterrowsjoinlenmaskmeltmergenlargestnsmallestto_pandas を介した Timedelta 型の追跡をサポートします。

    • astype 経由での非タイムデルタからタイムデルタへの変換をサポートします。

    • Timedelta をサポートしていない残りのメソッドに対しては、 NotImplementedError が発生します。

    • Timedelta を取得するために2つのタイムスタンプを減算することをサポートします。

    • Timedelta データ列よるインデックスをサポートします。

    • タイムスタンプや Timedelta の加算や減算をサポートします。

    • 2つの Timedelta 値間の2進演算をサポートします。

    • 2進演算と、 Timedelta 間の値の比較をサポートします。

    • 遅延 TimedeltaIndex をサポートします。

    • pd.to_timedelta をサポートします。

    • GroupBy 集計 minmaxmeanidxmaxidxminstdsummediancountanyallsizenuniqueheadtailaggregate をサポートします。

    • GroupBy フィルター処理を firstlast でサポートします。

    • TimedeltaIndex 属性を dayssecondsmicroseconds、および nanoseconds でサポートします。

    • axis=0axis=1 のタイムスタンプ列で diff をサポートします。

    • ceilfloor、および roundTimedeltaIndex メソッドをサポートします。

    • TimedeltaIndex.total_seconds メソッドをサポートします。

  • インデックスの算術演算子と比較演算子のサポートを追加しました。

  • Series.dt.round のサポートを追加しました。

  • DatetimeIndex のドキュメントページを追加しました。

  • Index.nameIndex.namesIndex.rename、 および Index.set_names のサポートを追加しました。

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

  • DatetimeIndex.month_name および DatetimeIndex.day_name のサポートを追加しました。

  • Series.dt.weekdaySeries.dt.time、および DatetimeIndex.time のサポートを追加しました。

  • Index.min および Index.max のサポートを追加しました。

  • pd.merge_asof のサポートを追加しました。

  • Series.dt.normalize および DatetimeIndex.normalize のサポートを追加しました。

  • Index.is_booleanIndex.is_integerIndex.is_floatingIndex.is_numeric、および Index.is_object のサポートを追加しました。

  • DatetimeIndex.roundDatetimeIndex.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_rangepd.bdate_range の両方にビジネス頻度のサポート(B、 BME、 BMS、 BQE、 BQS、 BYE、 BYS)を含めました。

  • DataFrame.reindexSeries.reindex 内の labels として、遅延 Index オブジェクトのサポートを追加しました。

  • Series.dt.daysSeries.dt.secondsSeries.dt.microseconds、 および Series.dt.nanoseconds のサポートを追加しました。

  • 数値型または文字列型の Index から DatetimeIndex を作成できるようにサポートを追加しました。

  • Timedelta オブジェクトによる文字列インデックスのサポートを追加しました。

  • Series.dt.total_seconds メソッドのサポートが追加されました。

改善

  • 不要な結合を避けることにより、同じ DataFrame からの系列に対して操作が実行される場合の連結と結合のパフォーマンスが改善されました。

  • quoted_identifier_to_snowflake_type をリファクタリングし、型がローカルにキャッシュされている場合にメタデータクエリを回避するようにしました。

  • すべてのローカル入力ケースを処理できるように、 pd.to_datetime を改善しました。

  • クライアントにデータをプルすることなく、別の遅延インデックスから遅延インデックスを作成します。

  • Indexビット演算子で NotImplementedError が発生するようになりました。

  • Index.names がnon-list-likeオブジェクトに設定された場合、より明確なエラーメッセージを表示します。

  • MultiIndex 値がローカルにプルされるごとに警告を発生します。

  • 仮テーブルの作成がトリガーされた場合、 pd.read_snowflake の警告メッセージに作成理由が含まれるように改善しました。

  • DataFrame.set_index、または DataFrame.indexSeries.index を設定する際に、先行評価を必要とするチェックを回避することで、パフォーマンスが改善されました。その結果、現在の Series または DataFrame オブジェクトの長さに一致しない新しいインデックスが発生しても、 ValueError は発生しなくなりました。その代わり、 Series または DataFrame オブジェクトが提供されたインデックスよりも長い場合、 Series または DataFrame の新しいインデックスは、「余分な」要素のために NaN 値で埋められます。それ以外の場合は、提供されたインデックスの余分な値が無視されます。

バグ修正

  • pd.Timedelta スカラーでナノ秒の無視を中止しました。

  • 2項演算のツリーの AssertionError を修正しました。

  • 名前付き系列を使用した Series.dt.isocalendar 内のバグを修正しました。

  • DataFrame 列から派生したSeriesオブジェクトの inplace 引数を修正しました。

  • Series.reindexDataFrame.reindex が、結果インデックスの名前を正しく更新しないバグを修正しました。

  • axis=1 の指定時に Series.take がエラーを発生しなかったバグを修正しました。

バージョン1.21.1(2024-09-05)

バグ修正

  • 非同期ジョブで to_pandas_batches を使用すると、非同期クエリ完了待ちの処理が不適切なためにエラーが発生するバグを修正しました。

バージョン1.21.0(2024-08-19)

新機能

  • snowflake.snowpark.testing.assert_dataframe_equal のサポートを追加しました。これは2つのSnowpark DataFrames の等質性をチェックするユーティリティ関数です。

改善

  • サーバー側の文字列サイズ制限のサポートを追加しました。

  • ストアドプロシージャ、 UDFs、 UDTFs をオプション引数付きで作成および呼び出しできるようにサポートを追加しました。

  • DataFrame.lineage.trace API に列系統のサポートを追加しました。

  • INFER_SCHEMA_OPTIONS 経由で DataFrameReaderINFER_SCHEMA オプションを渡せるようにサポートを追加しました。

  • Column.rlikeColumn.regexpparameters パラメーターを渡せるようにサポートを追加しました。

  • DataFrame が参照されなくなった(つまり、ガベージコレクションになった)ときに、現在のセッションで df.cache_result() によって作成された仮テーブルを自動的にクリーンアップするサポートを追加しました。これはまだ実験的な機能で、デフォルトでは有効になっていません。 session.auto_clean_up_temp_table_enabledTrue に設定すると有効になります。

  • snowflake.snowpark.functions.to_datefmt パラメーターに文字列リテラルのサポートを追加しました。

バグ修正

  • * 列を選択するために生成される SQL のサブクエリが正しくないバグを修正しました。

  • DataFrame.to_pandas_batches で、pandas DataFrame に対して特定の変換が行われた場合に、間違った分離レベルのために反復子がエラーをスローすることがあるバグを修正しました。

  • DataFrame.lineage.trace のバグを修正し、引用機能ビューの名前とバージョンを正しく分割できるようにしました。

  • Column.isin で、空のリストを渡された場合に SQL の生成が不正になるバグを修正しました。

  • list-like項目を持つセルを設定する際に、 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.backfill、 および Series.bfill のサポートを追加しました。

  • DataFrame.compareSeries.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 プロパティに yearmonthdayhourminutesecondmicrosecondnanoseconddatedayofyearday_of_yeardayofweekday_of_weekweekdayquarteris_month_startis_month_endis_quarter_startis_quarter_endis_year_startis_year_end、および is_leap_year のサポートを追加しました。

  • Resampler.fillna および Resampler.bfill のサポートを追加しました。

  • Timedelta 列や to_pandas の作成など、 Timedelta 型の限定サポートを追加しました。

  • Index.argmax および Index.argmin のサポートを追加しました。

改善

  • Snowpark pandasをインポートする際の公開プレビューの警告メッセージを削除しました。

  • SnowflakeQueryCompiler.is_series_like メソッドから不要なカウントクエリを削除しました。

  • Dataframe.columns は、Snowpark Indexオブジェクトではなく、ネイティブのpandas Indexオブジェクトを返すようになりました。

  • クエリコンパイラから Index を作成するために、リファクタリングして Index コンストラクターに query_compiler 引数を導入しました。

  • pd.to_datetime は、 Series オブジェクトの代わりに DatetimeIndex オブジェクトを返すようになりました。

  • pd.date_range は、 Series オブジェクトの代わりに DatetimeIndex オブジェクトを返すようになりました。

バグ修正

  • サポートされていない集計関数を pivot_table に渡すと、 KeyError ではなく NotImplementedError が発生するようにしました。

  • サポートされていない集計に関するエラーメッセージとテレメトリから、軸ラベルと呼び出し可能な名前を削除しました。

  • sort_values の後に呼び出された Series.drop_duplicatesDataFrame.drop_duplicates にある AssertionError を修正しました。

  • 名前が指定されていない場合に結果フレームの列名が間違っている場合がある Index.to_frame 内のバグを修正しました。

  • 一部のIndex docstringsが無視されるバグを修正しました。

  • 結果名が間違っている場合がある Series.reset_index(drop=True) 内のバグを修正しました。

  • 基になるウィンドウ式内の正しい列による Groupby.first/last 順序付けで発生するバグを修正しました。

バージョン1.20.0(2024-07-17)

Snowpark Library for Pythonのバージョン1.20.0では、いくつかの新機能が導入されています。

新機能

  • 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のストアドプロシージャ登録にオープンテレメトリトレースを追加しました。

  • Session.query_tag のアプリ名を JSON 形式で設定する Session.SessionBuilder.app_name 関数に、 format_json と呼ばれる新しいオプションパラメーターを追加しました。デフォルトでは、このパラメーターは 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 は、入力データのために、 pandas.Index を含むモック関数に名前付きパラメーター column_index を渡します。

    • pass_row_index は、現在関数が操作している0インデックスの行番号であるモック関数に、名前付きパラメーター row_index を渡します。

    • pass_input_data は、現在の式のために、入力データフレーム全体を含むモック関数に、名前付きパラメーター input_data を渡します。

    • DataFrameWriter.save_as_table メソッドにある column_order パラメーターのサポートを追加しました。

バグ修正

  • DecimalType の列を BinaryExpressions で使用した場合、誤って整数精度に切り捨てられるバグを修正しました。

Snowpark pandas API の更新

新機能

  • 以下の新しい API サポートを追加しました。

    • DataFrames

      • DataFrame.nlargest および DataFrame.nsmallest

      • DataFrame.assign

      • DataFrame.stack

      • DataFrame.pivot

      • DataFrame.to_csv

      • DataFrame.corr

      • DataFrame.corr

      • DataFrame.equals

      • DataFrame.reindex

      • DataFrame.at および DataFrame.iat

    • Series

      • Series.nlargest および Series.nsmallest

      • Series.at および Series.iat

      • Series.dt.isocalendar

      • Series.equals

      • Series.reindex

      • Series.to_csv

      • Series.case_when。ただし、条件または置換が呼び出し可能な場合を除く。

      • マテリアライズしたデータのある series.plot() をローカルクライアントに

    • GroupBy

      • DataFrameGroupBy.all および DataFrameGroupBy.any

      • DataFrameGroupBy および SeriesGroupBy 集合 first および last

      • DataFrameGroupBy.get_group

      • SeriesGroupBy.all および SeriesGroupBy.any

    • 一般

      • pd.pivot

      • read_excel (処理にローカルpandasを使用)

      • マテリアライズしたデータのある df.plot() をローカルクライアントに

  • 既存の APIs を以下のように拡張しました。

    • DataFrame.sampleSeries.samplereplacefrac > 1 のサポートを追加しました。

    • table 内の値がシングルコードポイント文字列である Series.str.translate の部分的サポートを追加しました。

    • method パラメーターが fillna で使用される場合の limit パラメーターのサポートを追加しました。

  • Index とその APIs のドキュメントページを追加しました。

バグ修正

  • スカラー other がリテラル0の場合に、np.whereとdf.whereを使用する際の問題を修正しました。

  • Snowpark pandas DataFrame または Seriesdtype=np.uint64 で変換する際の精度損失に関するバグを修正しました。

  • pivot_table の際、 indexcolumns に DataFrame 内のすべての列が含まれる場合、 valuesindex に設定されるバグを修正しました。

改善

  • Index.copy() のサポートを追加しました。

  • Index APIs に dtypevaluesitem()tolist()to_series()、および to_frame() のサポートを追加しました。

  • pd.pivot_tableDataFrame.pivot_table で、行がない DataFrames のサポートを拡大しました。

  • DataFrame.sort_indexSeries.sort_indexinplace パラメーターのサポートが追加されました。

バージョン1.19.0(2024-06-25)

Snowpark Library for Pythonのバージョン1.19.0では、いくつかの新機能が導入されています。

新機能

  • to_boolean 関数のサポートを追加しました。

  • Index とその APIs のドキュメントページを追加しました。

バグ修正

  • テーブルのあるPythonストアドプロシージャをタスクで実行すると、戻り型が失敗するバグを修正しました。

  • DataFrame が500列を超える場合に、 RecursionError: maximum recursion depth exceededdf.dropna が失敗するバグを修正しました。

  • クエリの実行が終了するまで AsyncJob.result("no_result") が待機しないバグを修正しました。

ローカルテストの更新

新機能

  • UDFs およびストアドプロシージャを登録する場合の strict パラメーターのサポートを追加しました。

バグ修正

  • convert_timezone で、source_timezone パラメーターの設定がエラーを返すバグを修正しました。

  • DateType 型の空のデータで DataFrame を作成すると AttributeError が発生するバグを修正しました。

  • 更新句があっても更新されない場合、テーブルマージに失敗するバグを修正しました。

  • to_char のモック実装において、着信列が連続しない行インデックスを持つ場合に IndexError が発生するバグを修正しました。

  • 着信列が連続しない行インデックスを持つ場合に IndexError が発生する CaseExpr 式の処理でバグを修正しました。

  • Column.like の実装において、着信列が連続しない行インデックスを持つ場合に IndexError が発生するバグを修正しました。

改善

  • DataFrame.replaceDataFrame.dropna、およびモック関数 iff の実装に、型強制のサポートを追加しました。

Snowpark Pandas API の更新

新機能

  • freqlimit パラメーターのない DataFrame.pct_changeSeries.pct_change の部分的サポートを追加しました。

  • Series.str.get のサポートを追加しました。

  • Series.dt.dayofweekSeries.dt.day_of_weekSeries.dt.dayofyear、および Series.dt.day_of_year のサポートを追加しました。

  • Series.str.__getitem__ (Series.str[...]) のサポートを追加しました。

  • Series.str.lstripSeries.str.rstrip のサポートを追加しました。

  • DataFrameGroupby.sizeSeriesGroupby.size のサポートを追加しました。

  • axis=0 のある集計 countsumminmaxmeanstd、および varDataFrame.expandingSeries.expanding のサポートを追加しました。

  • axis=0 のある集計カウントに DataFrame.rollingSeries.rolling のサポートを追加しました。

  • Series.str.match のサポートを追加しました。

  • 集計サイズに DataFrame.resampleSeries.resample のサポートを追加しました。

バグ修正

  • GroupBy.aggregate 列の出力順序が正しくないバグを修正しました。

  • 異なる dtypes の列が重複しているフレームで DataFrame.describe を呼び出すと、エラーや不正な結果が発生するバグを修正しました。

  • DataFrame.rollingSeries.rolling のバグを修正して、 window=0 が、 ValueError の代わりに NotImplementedError をスローするようにしました。

改善

  • axis=0 のある DataFrame.aggregateSeries.aggregate に名前付き集計のサポートを追加しました。

  • pd.read_csv は、ネイティブpandas CSV パーサーを使用して読み込み、parquetを使用してSnowflakeにデータをアップロードします。これにより、 read_csv でサポートされている日付パースや数値変換など、ほとんどのパラメーターを有効にすることができます。Parquet経由のアップロードは、 CSV 経由のアップロードのおよそ2倍の速さです。

  • pd.Index をSnowpark pandasで直接サポートするための初期作業。pd.Index をSnowpark pandasのファーストクラスコンポーネントとしてサポートするため、現在積極的に開発中です。

  • 遅延インデックスのコンストラクターを追加し、 lenshapesizeemptyto_pandas()、および names のサポートを追加しました。df.index の場合、Snowpark pandasは遅延インデックスオブジェクトを作成します。

  • df.columns の場合、Snowpark pandasでは、データがすでにローカルに保存されているため、 Index の非遅延バージョンをサポートします。

バージョン1.18.0(2024-05-28)

Snowparkライブラリのバージョン1.18.0では、いくつかの新機能が導入されています。

新機能

  • セッションの間、仮テーブルに DataFrame および Series オブジェクトを保存するために、 DataFrame.cache_result および Series.cache_result メソッドをユーザー向けに追加して、後続の操作の遅延時間を改善しました。

改善

  • index パラメーターなしと margins パラメーターありの DataFrame.pivot_table に対するサポートを追加しました。

  • 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_agg および DataFrame.analytics.cumulative_agg_agg のサポートを追加しました。

  • UDF およびストアドプロシージャ登録時の if_not_exists パラメーターのサポートを追加しました。

バグ修正

  • 時間形式の処理において、秒の端数部分が正しく処理されないバグを修正しました。

  • * での関数呼び出しに失敗するバグを修正しました。

  • map および struct 型のオブジェクトを作成できないバグを修正しました。

  • 関数 date_add が一部の数値型を処理できないバグを修正しました。

  • TimestampType のキャストが不正なデータになるバグを修正しました。

  • DecimalType データが不正な精度を持つ場合があるバグを修正しました。

  • 欠落したテーブルやビューを参照すると IndexError が発生するバグを修正しました。

  • モック関数 to_timestamp_ntzNone データを処理できないバグを修正しました。

  • モックされた UDFs が None の出力データを不適切に扱うバグを修正しました。

  • DataFrame.with_column_renamed が結合操作後に親 DataFrames からの属性を無視するバグを修正しました。

  • pandas DataFrame に変換する際に、大きな値の整数精度が失われるバグを修正しました。

  • pandas DataFrame から DataFrame を作成する際、 datetime オブジェクトのスキーマが間違っていたバグを修正しました。

  • Column.equal_nan の実装において、nullデータが正しく処理されていなかったバグを修正しました。

  • DataFrame.drop が結合操作後に親 DataFrames からの属性を無視するバグを修正しました。

  • モック関数 date_part で列の型が正しく設定されないバグを修正しました。

  • DataFrameWriter.save_as_table でnull非許容型の列にnullデータを挿入した場合に例外が発生しない不具合を修正しました。

  • DataFrameWriter.save_as_table の実装における以下のバグを修正しました。

    • 受信データが既存のテーブルと異なるスキーマを持つ場合、追加または切り捨てが失敗する。

    • 受信データにnull許容型の列が指定されていない場合、切り捨てが失敗する。

改善

  • 使用されていない pyarrow の依存関係チェックを削除しました。

  • Column.cast のターゲット型範囲が改善され、ブール値型とすべての整数型へのキャストのサポートが追加されました。

  • UDFs およびストアドプロシージャを呼び出す際のエラーエクスペリエンスを調整しました。

  • UDFs およびストアドプロシージャ登録の is_permanent および anonymous オプションに適切なエラーメッセージを追加し、これらの機能がまだサポートされていないことを明確にしました。

  • サポートされていないオプションや値を使用したファイル読み取り操作で、警告や不明確なエラー情報の代わりに NotImplementedError が発生するようになりました。

バージョン1.17.0(2024-05-21)

Snowparkライブラリのバージョン1.17.0では、いくつかの新機能が導入されています。

新機能

  • 以下の関数を使用して、テーブルとビューにコメントを追加できるようになりました。

    • 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_timestampNumericType および VariantType のデータ変換のサポートを追加しました。

  • モック関数 to_charDecimalTypeBinaryTypeArrayTypeMapTypeTimestampTypeDateTypeTimeType のデータ変換のサポートを追加しました。

  • 以下の 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] が大文字の識別子を返すバグを修正しました。

  • 関数 substr および substring がゼロベースの start_expr を処理できないバグを修正しました。

改善

  • エラー時に SnowparkLocalTestingException を発生させることで、非ローカル実行時に発生する SnowparkSQLException と同等のエラーエクスペリエンスを標準化しました。

  • Session.write_pandas メソッドのエラーエクスペリエンスを改善し、 NotImplementError が呼び出されたときに発生するようにしました。

  • 非ローカル実行でクローズされたセッションを再利用する際のエラーエクスペリエンスを調整しました。

バージョン1.16.0(2024-05-08)

Snowparkライブラリのバージョン1.16.0では、いくつかの新機能が導入されています。

新機能

  • Snowflakeオブジェクトのデータ系統を探索するための snowflake.snowpark.Session.lineage.trace を追加しました。

  • Pythonモジュールとして指定されたパッケージにストアドプロシージャを登録するサポートを追加しました。

  • 構造化型スキーマ解析のサポートを追加しました。

バグ修正

  • スキーマを推論する際、すでに一重引用符で囲まれているステージファイル一重引用符が追加されるバグを修正しました。

ローカルテストの更新

新機能

  • モック関数 to_dateStringTypeTimestampTypeVariantType のデータ変換のサポートを追加しました。

  • 以下の APIs のサポートを追加しました。

    • snowflake.snowpark.functions:

      • get

      • concat

      • concat_ws

バグ修正

  • NaT および NaN の値が認識されない原因となっていたバグを修正しました。

  • スキーマを推論する際、すでに一重引用符で囲まれているステージファイル一重引用符が追加されるバグを修正しました。

  • DataFrameReader.csv で区切り文字を含む引用符付きの値を処理できないバグを修正しました。

  • 算術計算に None の値がある場合、出力が math.nan ではなく None のままになるべきなのにそうならないバグを修正しました。

  • 関数 sum および covar_pop で、データに math.nan 値がある場合、出力も math.nan になるべきなのにそうならないバグを修正しました。

  • ステージ操作でディレクトリを処理できないバグを修正しました。

  • DataFrame.to_pandas が精度38のSnowflake数値型を int64 として受け取るべきなのにそうならないバグを修正しました。

バージョン1.15.0(2024-04-24)

Snowparkライブラリのバージョン1.15.0では、いくつかの新機能が導入されています。

新機能

  • DataFrameWritetruncate 保存モードが追加され、既存のテーブルをドロップする代わりに、基になるテーブルを切り捨てて上書きするようになりました。

  • 収集操作中のクエリプランの高さと重複ノード数を計算するためのテレメトリーを追加しました。

  • DataFrame からステージにおける1つまたは複数のファイルにデータをアンロードするために以下の関数を追加しました。

    • DataFrame.write.json

    • DataFrame.write.csv

    • DataFrame.write.parquet

  • DataFrame および DataFrameWriter のアクション関数に、オープンテレメトリー APIs を使用した分散トレースを追加しました。

    • snowflake.snowpark.DataFrame:

      • collect

      • collect_nowait

      • to_pandas

      • count

      • show

    • snowflake.snowpark.DataFrameWriter:

      • save_as_table

  • snow:// URLs、 snowflake.snowpark.Session.file.get、および snowflake.snowpark.Session.file.get_stream のサポートが追加されました。

  • ストアドプロシージャと UDFs を comment で登録するサポートを追加しました。

  • UDAF クライアントサポートの公開プレビューの準備が整いました。Snowflakeからの UDAF 公開プレビューの発表にご期待ください。

  • 動的ピボットのサポートを追加しました。この機能は現在プライベートプレビュー中です。

改善

  • 重複するサブクエリを共通テーブル式(CTEs)に変換することで、コンパイルと実行の両方で生成クエリのパフォーマンスが向上しました。これはまだ実験的な機能で、デフォルトでは有効になっていません。 session.cte_optimization_enabledTrue に設定すると有効になります。

バグ修正

  • ストアドプロシージャおよびユーザ定義関数を登録するクエリ実行に 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_timeStringTypeTimestampTypeVariantType のデータ変換のサポートを追加しました。

バグ修正

  • 定数関数の列がnull充填されるバグを修正しました。

  • to_objectto_arrayto_binary のnull入力をより適切に処理できるように修正しました。

  • タイムスタンプデータの比較で、2262年以降を処理できないバグを修正しました。

  • Session.builder.getOrCreate が作成されたモックセッションを返すべきなのにそうならないバグを修正しました。

バージョン1.14.0(2024-03-20)

Snowparkライブラリのバージョン1.14.0では、いくつかの新機能が導入されています。

新機能

  • process メソッドでベクトル化された UDTFs の作成のサポートを追加しました。

  • 以下のデータフレーム関数のサポートを追加しました。

    • to_timestamp_ltz

    • to_timestamp_ntz

    • to_timestamp_tz

    • locate

  • ASOFJOIN 型のサポートが追加されました。

  • 以下のローカルテスト 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 で正しくデータが解析されない。

    • Column.regexp は、 patternColumn の場合、最初のエントリのみを考慮する。

    • Table.update で、行のnull値を更新する際に KeyError が発生する。

    • VARIANT 列で DataFrame.collect 時にエラーが発生する。

    • count_distinct がカウント時に正しく動作しない。

    • 整数列のnull値で TypeError が発生する。

バージョン1.13.0(2024-02-26)

Snowparkライブラリのバージョン1.13.0では、いくつかの新機能が導入されています。

新機能

  • 関数 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-02-08)

Snowparkライブラリのバージョン1.12.1では、いくつかの新機能が導入されています。

改善

  • 最適なメモリ割り当てのために、 to_pandas 変換時にデフォルトで split_blocks=True を使用します。このパラメーターは pyarrow.Table.to_pandas に渡され、 PyArrow がメモリ割り当てを分割して、単一の連続したブロックではなく、小さく管理しやすいブロックに割り当てられるようにします。この結果、大きなデータセットを扱う際のメモリ管理が改善されます。

バグ修正

  • Null値を持つ IntergerType 列を持つDataframe上で評価するとエラーが発生する DataFrame.to_pandas のバグを修正しました。

バージョン1.12.0(2024-01-29)

Snowparkライブラリのバージョン1.12.0では、いくつかの新機能が導入されています。

動作変更(API 互換)

  • to_pandas 操作中にデータ型を解析するときは、大きな整数値の精度問題を修正するために GS 精度値に依存します。これは、以前に int8 として返されていた列が int64 として返されるユーザーに、影響を与える可能性があります。ユーザーは、戻り値の列に明示的に精度値を指定することで、この問題を解決することができます。

  • Session.call を実行すると、 collect() 操作が実行される場合を除いて、ストアドプロシージャがトリガーされなかったテーブルストアドプロシージャの場合に、 Session.call の動作を揃えました。

  • StoredProcedureRegistration は、クライアントのローカルバージョンのライブラリにおける依存パッケージとして snowflake-snowpark-python を自動的に追加するようになりました。サーバーがそのバージョンをサポートできない場合は、エラーがスローされます。

新機能

  • StoredProcedure.__call__statement_params を公開しました。

  • Session.add_import に2つのオプション引数を追加しました。

    • 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 に以下の関数を追加しました。

    • 複数のウィンドウサイズでの合計や平均のような移動集計を可能にするために、 moving_agg 関数を DataFrame.analytics に追加しました。

    • 複数のウィンドウサイズでの合計や平均のような移動集計を可能にするために、 cummulative_agg 関数を DataFrame.analytics に追加しました。

バグ修正

  • ブール値が誤って整数値を上書きする 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 が10進数型を取得し、 pandas にオブジェクトのd型を作成するバグを修正しました。代わりに、値を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 で選択するようになります。

  • エイリアシングされた列のある別の DataFrame から DataFame がコピーされている場合に 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許容フィールドがブール値型で尊重されないバグを修正しました。この修正は、ユーザーが仮テーブルを作成する権限を持っている場合にのみ有効であることに注意してください。

  • limit() を使用した場合に、 session.sql にある非選択ステートメントが SQL クエリがドロップされる SQL シンプリファイアーでのバグを修正しました。

  • セッションパラメーター ERROR_ON_NONDETERMINISTIC_UPDATE がtrueの場合に例外が発生するバグを修正しました。