Python用Snowparkライブラリの2024年リリースノート¶
この記事には、 Snowpark Library for Python のリリースノートが含まれています。また、該当する場合は以下が含まれます。
動作の変更
新機能
顧客向けバグ修正
Snowflake は、 Snowpark Library for Python の更新にセマンティックバージョニングを使用します。
バージョン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の場合に例外が発生するバグを修正しました。