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インターバル定数を使用できるようにサポートを追加しました。ファイル書き込みのサポートを追加しました。この機能は現在プライベートプレビュー中です。
QueryRecord
にthread_id
を追加し、クエリ履歴を送信するスレッドIDを追跡できるようにしました。Session.stored_procedure_profiler
のサポートを追加しました。
バグ修正¶
ストアドプロシージャまたは UDxF を型ヒントで登録すると、関数からデフォルト値を読み込もうとしたときに「
NoneType
has nolen()
」という警告が出るバグを修正しました。
Snowpark Pandas API の更新¶
新機能¶
TimedeltaIndex.mean
メソッドのサポートが追加されました。axis=0
のTimedelta
列をagg
またはaggregate
で集計する場合の一部サポートを追加しました。pd.merge_asof
向けにby
、left_by
、right_by
、left_index
、 およびright_index
のサポートを追加しました。Session.query_history
にパラメーターinclude_describe
を渡すためのサポートを追加しました。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
のサポートを追加しました。遅延
Series
オブジェクトを使用したDataFrame
とIndex
オブジェクトをdata
、index
、およびcolumns
引数として構築するためのサポートを追加しました。DataFrame
/Series
data
に存在しないindex
とcolumn
の値を使用してSeries
とDataFrame
オブジェクトを構築するためのサポートを追加しました。pd.read_sas
のサポートを追加しました(処理にネイティブpandasを使用)。rolling().count()
とexpanding().count()
をTimedelta
系列と列に適用するためのサポートを追加しました。pd.bdate_range
とpd.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.map
、Series.apply
、DataFrame.apply
、 およびDataFrame.applymap
で適用するサポートを追加しました。
改善¶
TIMESTAMP_TZ 型の元のタイムゾーンオフセットを維持するように
to_pandas
を改良しました。TIMESTAMP_TZ 型の
dtype
の結果を改善し、正しいタイムゾーンオフセットを表示するようにしました。TIMESTAMP_LTZ 型の
dtype
の結果を改善し、正しいタイムゾーンを表示するようにしました。groupby集計で
numeric_only
にブール値以外を渡したときのエラーメッセージを改善しました。sort_values
の並べ替えアルゴリズムに関する不要な警告を削除しました。SCOPED オブジェクトを内部で仮テーブルを作成するために使用します。SCOPED オブジェクトは、sproc内で作成された場合はsprocスコープになり、それ以外の場合はセッションスコープになり、スコープの終了時にオブジェクトは自動的にクリーニングされます。
予想外の遅さのマテリアライゼーションにつながる操作に対する警告メッセージを改善しました。
Series.apply
のconvert_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
を発生します。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
をサポートしていない残りのメソッドに対しては、NotImplementedError
が発生します。Timedelta
を取得するために2つのタイムスタンプを減算することをサポートします。Timedelta
データ列よるインデックスをサポートします。タイムスタンプや
Timedelta
の加算や減算をサポートします。2つの
Timedelta
値間の2進演算をサポートします。2進演算と、
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
でサポートします。axis=0
とaxis=1
のタイムスタンプ列でdiff
をサポートします。ceil
、floor
、およびround
でTimedeltaIndex
メソッドをサポートします。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)を含めました。DataFrame.reindex
とSeries.reindex
内のlabels
として、遅延Index
オブジェクトのサポートを追加しました。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
を改善しました。クライアントにデータをプルすることなく、別の遅延インデックスから遅延インデックスを作成します。
Indexビット演算子で
NotImplementedError
が発生するようになりました。Index.names
がnon-list-likeオブジェクトに設定された場合、より明確なエラーメッセージを表示します。MultiIndex
値がローカルにプルされるごとに警告を発生します。仮テーブルの作成がトリガーされた場合、
pd.read_snowflake
の警告メッセージに作成理由が含まれるように改善しました。DataFrame.set_index
、またはDataFrame.index
やSeries.index
を設定する際に、先行評価を必要とするチェックを回避することで、パフォーマンスが改善されました。その結果、現在のSeries
またはDataFrame
オブジェクトの長さに一致しない新しいインデックスが発生しても、ValueError
は発生しなくなりました。その代わり、Series
またはDataFrame
オブジェクトが提供されたインデックスよりも長い場合、Series
またはDataFrame
の新しいインデックスは、「余分な」要素のためにNaN
値で埋められます。それ以外の場合は、提供されたインデックスの余分な値が無視されます。
バグ修正¶
pd.Timedelta
スカラーでナノ秒の無視を中止しました。2項演算のツリーの
AssertionError
を修正しました。名前付き系列を使用した
Series.dt.isocalendar
内のバグを修正しました。DataFrame 列から派生したSeriesオブジェクトの
inplace
引数を修正しました。Series.reindex
とDataFrame.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
経由でDataFrameReader
にINFER_SCHEMA
オプションを渡せるようにサポートを追加しました。Column.rlike
とColumn.regexp
にparameters
パラメーターを渡せるようにサポートを追加しました。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 の生成が不正になるバグを修正しました。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
モックプランの正規表現ステートメントにおけるフラグ解析のサポートを追加しました。これにより、上記の
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
列や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_duplicates
とDataFrame.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.sample
とSeries.sample
でreplace
とfrac > 1
のサポートを追加しました。table
内の値がシングルコードポイント文字列であるSeries.str.translate
の部分的サポートを追加しました。method
パラメーターがfillna
で使用される場合のlimit
パラメーターのサポートを追加しました。
Index
とその APIs のドキュメントページを追加しました。
バグ修正¶
スカラー
other
がリテラル0の場合に、np.whereとdf.whereを使用する際の問題を修正しました。Snowpark pandas
DataFrame
またはSeries
をdtype=np.uint64
で変換する際の精度損失に関するバグを修正しました。pivot_table
の際、index
とcolumns
に DataFrame 内のすべての列が含まれる場合、values
がindex
に設定されるバグを修正しました。
改善¶
Index.copy()
のサポートを追加しました。Index APIs に
dtype
、values
、item()
、tolist()
、to_series()
、およびto_frame()
のサポートを追加しました。pd.pivot_table
とDataFrame.pivot_table
で、行がない DataFrames のサポートを拡大しました。DataFrame.sort_index
とSeries.sort_index
でinplace
パラメーターのサポートが追加されました。
バージョン1.19.0(2024-06-25)¶
Snowpark Library for Pythonのバージョン1.19.0では、いくつかの新機能が導入されています。
新機能¶
to_boolean
関数のサポートを追加しました。Index
とその APIs のドキュメントページを追加しました。
バグ修正¶
テーブルのあるPythonストアドプロシージャをタスクで実行すると、戻り型が失敗するバグを修正しました。
DataFrame が500列を超える場合に、
RecursionError: maximum recursion depth exceeded
でdf.dropna
が失敗するバグを修正しました。クエリの実行が終了するまで
AsyncJob.result("no_result")
が待機しないバグを修正しました。
ローカルテストの更新¶
新機能¶
UDFs およびストアドプロシージャを登録する場合の
strict
パラメーターのサポートを追加しました。
バグ修正¶
convert_timezone
で、source_timezone
パラメーターの設定がエラーを返すバグを修正しました。DateType
型の空のデータで DataFrame を作成するとAttributeError
が発生するバグを修正しました。更新句があっても更新されない場合、テーブルマージに失敗するバグを修正しました。
to_char
のモック実装において、着信列が連続しない行インデックスを持つ場合にIndexError
が発生するバグを修正しました。着信列が連続しない行インデックスを持つ場合に
IndexError
が発生するCaseExpr
式の処理でバグを修正しました。Column.like
の実装において、着信列が連続しない行インデックスを持つ場合にIndexError
が発生するバグを修正しました。
改善¶
DataFrame.replace
、DataFrame.dropna
、およびモック関数iff
の実装に、型強制のサポートを追加しました。
Snowpark Pandas API の更新¶
新機能¶
freq
とlimit
パラメーターのないDataFrame.pct_change
とSeries.pct_change
の部分的サポートを追加しました。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
が、ValueError
の代わりにNotImplementedError
をスローするようにしました。
改善¶
axis=0
のあるDataFrame.aggregate
とSeries.aggregate
に名前付き集計のサポートを追加しました。pd.read_csv
は、ネイティブpandas CSV パーサーを使用して読み込み、parquetを使用してSnowflakeにデータをアップロードします。これにより、read_csv
でサポートされている日付パースや数値変換など、ほとんどのパラメーターを有効にすることができます。Parquet経由のアップロードは、 CSV 経由のアップロードのおよそ2倍の速さです。pd.Index
をSnowpark pandasで直接サポートするための初期作業。pd.Index
をSnowpark pandasのファーストクラスコンポーネントとしてサポートするため、現在積極的に開発中です。遅延インデックスのコンストラクターを追加し、
len
、shape
、size
、empty
、to_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.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_SCHEMAUTF8
値のある 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
の実装において、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_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_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_date
でStringType
、TimestampType
、VariantType
のデータ変換のサポートを追加しました。以下の 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では、いくつかの新機能が導入されています。
新機能¶
DataFrameWrite
にtruncate
保存モードが追加され、既存のテーブルをドロップする代わりに、基になるテーブルを切り捨てて上書きするようになりました。収集操作中のクエリプランの高さと重複ノード数を計算するためのテレメトリーを追加しました。
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_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
でStringType
、TimestampType
、VariantType
のデータ変換のサポートを追加しました。
バグ修正¶
定数関数の列がnull充填されるバグを修正しました。
to_object
、to_array
、to_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
は、pattern
がColumn
の場合、最初のエントリのみを考慮する。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_integrations
とsecrets
を追加し、外部アクセスと統合できるようにしました。新しいメソッド
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.
Session.create_dataframe
で、スキーマにある非null許容フィールドがブール値型で尊重されないバグを修正しました。この修正は、ユーザーが仮テーブルを作成する権限を持っている場合にのみ有効であることに注意してください。limit()
を使用した場合に、session.sql
にある非選択ステートメントが SQL クエリがドロップされる SQL シンプリファイアーでのバグを修正しました。セッションパラメーター
ERROR_ON_NONDETERMINISTIC_UPDATE
がtrueの場合に例外が発生するバグを修正しました。