Python用Snowparkライブラリの2023年リリースノート¶
この記事には、 Snowpark Library for Python のリリースノートが含まれています。また、該当する場合は以下が含まれます。
動作の変更
新機能
顧客向けバグ修正
Snowflake は、 Snowpark Library for Python の更新にセマンティックバージョニングを使用します。
ドキュメントについては、 Python用Snowpark開発者ガイド をご参照ください。
バージョン1.11.1(2023-12-07)¶
Snowparkライブラリのバージョン1.11.1では、いくつかの新機能が導入されています。
新機能¶
conn_error属性をSnowflakeSQLExceptionに追加しました。これは、snowflake-connector-pythonからの基礎となる例外全体を格納します。RelationalGroupedDataframe.pivot()のサポートが追加され、次のパターンDataframe.group_by(...).pivot(...)でpivotにアクセスできるようになりました。実験的な機能として、Snowflakeアカウントに接続することなくローカルでSnowpark Python DataFrames を作成および操作できるローカルテストモードを追加しました。ローカルテストフレームワークを使用すると、コードの変更をアカウントに展開する前に、開発マシンまたは CI (継続的統合)パイプラインで DataFrame 操作をローカルにテストできます。
snowflake.snowpark.functionsにarrays_to_objectの新しい関数のサポートを追加しました。ベクトルデータ型のサポートを追加しました。
依存関係の更新¶
cloudpickleの依存関係を
cloudpickle==2.2.1で動作するように更新しました。snowflake-connector-pythonをバージョン3.4.0に更新しました。
バグ修正¶
DataFrame 列名の引用チェックで改行文字がサポートされるようになりました。
session.read.with_metadataによって生成された DataFrame がdf.write.save_as_tableを実行するときに一貫性のないテーブルを作成するバグを修正しました。
バージョン1.10.0(2023-11-03)¶
Snowparkライブラリのバージョン1.10.0では、いくつかの新機能が導入されています。
新機能¶
DataFrame.to_local_iterator()結果で大文字と小文字の区別を管理するためのサポートを追加しました。UDTFRegistration.register、UDTFRegistration.register_file、functions.pandas_udtfでオプションのパラメーターinput_namesを使用して、ベクトル化 UDTF の入力列名を指定するためのサポートを追加しました。デフォルトでは、RelationalGroupedDataFrame.applyInPandasは現在の DataFrame スキーマから列名を推測します。SQL の例外によって引き起こされた場合、
SnowflakeSQLExceptionにsql_error_codeとraw_message属性を追加しました。
バグ修正¶
DataFrame.to_pandas()でSnowpark DataFramesをPandas DataFrames に変換する際、19桁を超える整数で精度が落ちていたバグを修正しました。session.add_packagesで、プロジェクト名にアンダースコアとバージョンを含む要件指定子を処理できないバグを修正しました。DataFrame.limit()で、offsetが使用され、親DataFrameがlimitを使用する場合のバグを修正しました。これでoffsetが親 DataFrame のlimitに影響を与えることはなくなりました。DataFrame.write.save_as_tableで、 API の読み込みから作成された DataFrames が無効な列名$1のためにSnowflakeにデータを保存できないバグを修正しました。
動作の変更¶
date_formatの動作を変更しました。format引数をオプションから必須に変更しました。返された結果は、日付オブジェクトから日付形式の文字列に変更されました。
ウィンドウ関数またはシーケンス依存データ生成(
normal、zipf、uniform、seq1、seq2、seq4、seq8)関数が使用されている場合は、クエリ生成時にソートおよびフィルター操作がフラット化されなくなります。
バージョン1.9.0(2023年10月16日)¶
Snowparkライブラリのバージョン1.9.0では、いくつかの新機能が導入されています。
新機能¶
Python 3.11ランタイム環境のサポートを追加しました。
ARRAYとOBJECTリテラルに対するPythonObjJSONEncoderJSON シリアライズ可能オブジェクトのサポート。
依存関係の更新¶
typing-extensionsの依存関係を再追加しました。
バグ修正¶
仮のストアドプロシージャ UDTFs、 UDFs、 UDAFs において、永続的なステージロケーションからのインポートが無視されていたバグを修正しました。
テーブルの記述に挿入権限を必要としない
DataFrameWriter.save_as_tableに対して CTAS (CREATE TABLE AS SELECT) ステートメントを使用するように戻しました。
バージョン1.8.0(2023年9月14日)¶
Snowparkライブラリのバージョン1.8.0では、いくつかの新機能が導入されています。
新機能¶
UDFs 登録時の
VOLATILEとIMMUTABLEキーワードへのサポートを追加しました。DataFrame.save_as_tableを使用してデータフレームを保存する際にクラスタリングキーを指定できるようになりました。Session.create_dataframeを使用してデータフレームを作成する際にschemaのIterableオブジェクト入力を受け入れるようになりました。Sessionオブジェクトを返すDataFrame.sessionプロパティを追加しました。セッション ID を表す整数を返す
Session.session_idプロパティを追加しました。SnowflakeConnectionオブジェクトを返すSession.connectionプロパティを追加しました。構成ファイルまたは環境変数からSnowparkセッションを作成するためのサポートを追加しました。
依存関係の更新¶
snowflake-connector-pythonが3.2.0に更新されました。
バグ修正¶
互換性のあるパッケージのバージョンが
session.add_packagesに追加された場合でも、パッケージの自動アップロードがValueErrorを発生させるバグを修正しました。register_from_fileを使用する際にテーブルのストアドプロシージャが正しく登録されないバグを修正しました。データフレームの結合が
invalid_identifierエラーで失敗するバグを修正しました。DataFrame.copyが返されたコピーに対してSQL simplifierを無効にしていたバグを修正しました。session.sql()に何らかのパラメーターが指定されるとsession.sql().select()が失敗するバグを修正しました。
バージョン1.7.0(2023年8月28日)¶
Snowparkライブラリのバージョン1.7.0では、いくつかの新機能が導入されています。
動作の変更¶
パラメーター
is_permanent=Falseを指定してストアドプロシージャ UDFs、 UDTFs、 UDAFs を作成する場合、stage_nameを指定しても仮オブジェクトが作成されるようになりました。is_permanentのデフォルト値はFalseであるため、永続オブジェクトに対してこの値を明示的にTrueに設定しないと、ユーザーは動作の変化に気づくことになります。types.StructFieldが、デフォルトで列識別子をエンクォートするようになりました。
新機能¶
外部アクセスとの統合を可能にするために、Snowpark Pythonから UDF、 UDTF またはストアドプロシージャを作成するときに使用できるパラメーター
external_access_integrationsとsecretsを追加しました。snowflake.snowpark.functionsの新しい関数array_flattenとflattenへのサポートが追加されました。snowflake.snowpark.relational_grouped_dataframeでのapply_in_pandasのサポートを追加しました。Snowflake 上で
Session.replicate_local_environment経由でローカルPython環境を複製するサポートを追加しました。
バグ修正¶
順番やデータが与えられた場合にNull許容に影響が出て、
session.create_dataframe列を適切に設定できないバグを修正しました。テーブル関数の出力列が DataFrame の列と重複している場合に、テーブル関数を使用すると
DataFrame.selectが列やエイリアスの列を識別できないバグを修正しました。
バージョン1.6.1(2023-08-02)¶
動作の変更¶
DataFrameWriter.save_as_tableは、ユーザーが提供したスキーマ、またはユーザー入力のデータに基づいて推測されたスキーマのNull許容フィールドを尊重するようになりました。
新機能¶
snowflake.snowpark.functionsに新しい関数のサポートが追加されました。array_sortsort_arrayarray_minarray_maxexplode_outer
Session.add_requirementsまたはSession.add_packages経由で指定された純粋なPythonパッケージのサポートを追加しました。パッケージがSnowflake Anacondaチャネルに存在しなくても、ストアドプロシージャや UDFs で使用できるようになりました。Sessionパラメーター
custom_packages_force_upload_enabledとcustom_packages_upload_enabledを追加し、上記の純粋なPythonパッケージ機能をサポートするようにしました。どちらのパラメーターもデフォルトはFalseです。conda環境 YAML ファイルを
Session.add_requirementsに渡すことにより、パッケージ要件の指定に対するサポートを追加しましたバインド変数を含むマルチクエリデータフレームの非同期実行に対するサポートを追加しました。
DataFrame.renameで複数の列名を変更するためのサポートを追加しました。Geometryデータ型のサポートを追加しました。
ストアドプロシージャの
session.sql()でparamのサポートを追加しました。ユーザー定義集計関数(UDAFs)のサポートを追加しました。この機能は現在プライベートプレビュー中です。
ベクトル化されたユーザー定義テーブル関数(ベクトル化された UDTFs)のサポートを追加しました。この機能は現在公開プレビュー中です。
Snowflakeタイムスタンプのバリアント(つまり、
TIMESTAMP_NTZ、TIMESTAMP_LTZ、TIMESTAMP_TZ)のサポートを追加しました。TimestampTypeコンストラクターの引数に TimestampTimezone を追加しました。UDFs を登録する際、関数に注釈を付けるための
NTZ、LTZ、およびTZの型ヒントを追加しました。
改善¶
冗長な依存関係typing-extensionsを削除しました。
DataFrame.cache_resultは、現在のデータベースとスキーマで、完全修飾名の仮テーブルを作成するようになりました。
バグ修正¶
pandasがインポートされる前に型チェックが行われるバグを修正しました。
numpy.ufuncから UDF を作成する際のバグを修正しました。SQL シンプリファイアーが有効な場合に、
DataFrame.unionが正しいSelectable.schema_queryを生成しなかったバグを修正しました。
依存関係の更新¶
snowflake-connector-pythonをバージョン3.0.4に更新しました。
バージョン1.5.1(2023-06-20)¶
新機能および更新¶
Python 3.10ランタイム環境のサポートを追加しました。
バージョン1.5.0(2023-06-13)¶
動作の変更¶
DataFrame.aggやDataFrame.describeなどの関数による集計結果で、列名から非表示文字が取り除かれなくなりました。
新機能および更新¶
Python 3.9ランタイム環境のサポートを追加しました。
snowflake.snowpark.functionsに新しい関数のサポートが追加されました。array_generate_rangearray_unique_aggcollect_setsequenceストアドプロシージャの登録と呼び出しに、
TABLE戻り型のサポートが追加されました。列に格納できる最大文字数を指定する、
StringType()のパラメーターlengthに対するサポートを追加しました。functions.get()のエイリアスfunctions.element_at()を追加しました。functions.containsのエイリアスColumn.containsを追加しました。実験的な機能
DataFrame.aliasを追加しました。DataFrameReaderを使用してDataFrameを作成する際に、ステージからメタデータ列をクエリできるようにするサポートを追加しました。既存の
StructTypeオブジェクトにフィールドをさらに追加するためのStructType.addのサポートを追加しました。ストアドプロシージャの呼び出し元権限を指定するために、
StoredProcedureRegistration.register_from_file()のパラメーターexecute_asのサポートを追加しました。
バグ修正¶
SQL シンプリファイアーが有効な場合に、
Dataframe.join_table_functionが、結合テーブル関数を設定するために必要なクエリすべてを実行しないバグを修正しました。mypyチェックを破損する、ColumnOrName、ColumnOrLiteralStr、ColumnOrSqlExpr、LiteralTypeおよびColumnOrLiteralのカスタム型の型ヒント宣言を修正しました。DataFrameWriter.save_as_tableおよびDataFrame.copy_into_tableが完全修飾テーブル名の解析に失敗するバグを修正しました。
バージョン1.4.0(2023-04-24)¶
新機能¶
session.getOrCreateのサポートを追加しました。エイリアス
Column.getFieldのサポートを追加しました。snowflake.snowpark.functionsに新しい関数のサポートが追加されました。date_addおよびdate_subを使用すると、加算と減算の演算が簡単になります。ddaydiffdexplodedarray_distinctdregexp_extractdstructdformat_numberdbrounddsubstring_index
UDFs、 UDTFs、および
register_from_fileを使用したストアドプロシージャを作成するときにパラメーターskip_upload_on_content_matchを追加し、同じバージョンのファイルがすでにステージ上にある場合にステージへのファイルのアップロードをスキップしました。ドットを含むテーブル名を取得するための
DataFrame.save_as_tableメソッドのサポートが追加されました。DataFrame.filter()またはDataFrame.order_by()の後に射影ステートメントが続く場合は、フラット化された SQL が生成されます(例:DataFrame.select()、DataFrame.with_column())。Dataframe.create_or_replace_dynamic_tableを使用した動的テーブルの作成(プライベートプレビュー内)のサポートが追加されました。バインド変数をサポートするために、オプションの引数
paramsをsession.sql()に追加しました。この引数はストアドプロシージャではまだサポートされていないことに注意してください。
バグ修正¶
区切り文字が渡されたときに例外がスローされる
strtok_to_arrayのバグを修正しました。モジュールが他の依存関係と同じ名前空間を持っていた
session.add_importのバグを修正しました。
バージョン1.3.0(2023-03-28)¶
新機能¶
functions.initcap()にdelimiterパラメーターのサポートを追加しました。異なる数の入力式を受け入れる
functions.hash()のサポートを追加しました。実行時の構成の可変性を取得、設定、または確認するための API
Session.confを追加しました。case_sensitiveパラメータを使用してDataFrame.collectからのRow結果で大文字と小文字の区別を管理するためのサポートを追加しました。snowflake.snowpark.types.StructTypeのインデクサーサポートを追加しました。オプションで SQL 例外のエラーログを無効にするために
Dataframe.collectとDataframe.collect_no_waitにキーワード引数log_on_exceptionを追加しました。
バグ修正¶
別の DataFrame セット操作の後に DataFrame セット操作(
DataFrame.subtract、DataFrame.unionなど)が呼び出され、DataFrame.selectまたはDataFrame.with_columnが例外をスローするバグを修正しました。連鎖した並べ替えステートメントが SQL 簡略化機能によって上書きされるバグを修正しました。
改善¶
デフォルトで定数サブクエリエイリアス(
SNOWPARK_LEFT、SNOWPARK_RIGHT)を使用するように JOIN クエリを簡素化しました。ユーザーは実行時にsession.conf.set('use_constant_subquery_alias', False)を使用してこれを無効にし、代わりにランダムに生成されたエイリアス名を使用できます。session.call()でステートメントパラメーターを指定できます。100,000 行のチャンクサイズにデフォルト設定することで、ストアドプロシージャで大きなPandas DataFrames のアップロードを有効にしました。
バージョン1.2.0(2023-03-02)¶
新機能および更新¶
ストアドプロシージャの登録時に、生成されたスクリプトでソースコードをコメントとして表示するためのサポートを追加しました。これはデフォルトで有効になっています。登録時に
source_code_display=Falseを指定するとオフになります。Snowpark Python から UDF、 UDTF、またはストアドプロシージャを作成するときに、指定された関数またはプロシージャがすでに存在する場合は、その作成を無視するパラメーター
if_not_existsを追加しました。snowflake.snowpark.functions.getを呼び出して配列から値を抽出するときに整数を受け入れます。Snowflake組み込み関数 REVERSE へのアクセスを開くために、関数に
functions.reverseを追加しました。廃止としてマーク済みの
is_owner_fileを置き換える、パラメーターrequire_scoped_urlをsnowflake.snowflake.files.SnowflakeFile.open()(プライベートプレビュー)に追加して、
バグ修正¶
Snowparkセッションの作成時に
paramstyleをqmarkに上書きするバグを修正しました。df.join(..., how="cross")がSnowparkJoinException: (1112): Unsupported using join type 'Cross'で失敗するバグを修正しました。連鎖関数の呼び出しから作成された
DataFrame列をクエリすると、間違った列名が使用されるバグを修正しました。
バージョン1.1.0(2023-01-26)¶
新機能および更新¶
関数に
asc、asc_nulls_first、asc_nulls_last、desc、desc_nulls_first、desc_nulls_last、date_part、 およびunix_timestampを追加しました。列名とデータ型のペアのリストを返すプロパティ
DataFrame.dtypesを追加しました。次のエイリアスを追加しました。
functions.expr() for functions.sql_expr()。functions.date_format() for functions.to_date()。functions.monotonically_increasing_id() for functions.seq8()。functions.from_unixtime() for functions.to_timestamp()。
バグ修正¶
列のエイリアスと結合を適切に処理しないケースが見られた SQL 簡略化のバグを修正しました。詳細については、https://github.com/snowflakedb/snowpark-python/issues/658をご参照ください。
関数呼び出し NaN および INF に対して誤った列名を生成する SQL 簡略化のバグを修正しました。
改善¶
Snowflake 7.3のリリース後、セッションパラメーター
PYTHON_SNOWPARK_USE_SQL_SIMPLIFIERはTrueになります。snowpark-pythonでは、session.sql_simplifier_enabledはデフォルトでPYTHON_SNOWPARK_USE_SQL_SIMPLIFIERの値を読み取ります。つまり、Snowflake 7.3のリリース後、デフォルトで SQL シンプリファイアーが有効になります。これをオフにするには、SnowflakeでPYTHON_SNOWPARK_USE_SQL_SIMPLIFIERをFalseに設定するか、Snowparkからsession.sql_simplifier_enabled = Falseを実行します。より簡潔な SQL の生成ができるように、SQL 簡略化を使用することをお勧めします。