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

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

  • 動作の変更

  • 新機能

  • 顧客向けバグ修正

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

バージョン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.functionsarrays_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.registerUDTFRegistration.register_filefunctions.pandas_udtf でオプションのパラメーター input_names を使用して、ベクトル化 UDTF の入力列名を指定するためのサポートを追加しました。デフォルトでは、 RelationalGroupedDataFrame.applyInPandas は現在の DataFrame スキーマから列名を推測します。

  • SQL の例外によって引き起こされた場合、 SnowflakeSQLExceptionsql_error_coderaw_message 属性を追加しました。

バグ修正

  • DataFrame.to_pandas() でSnowpark DataFramesをPandas DataFrames に変換する際、19桁を超える整数で精度が落ちていたバグを修正しました。

  • session.add_packages で、プロジェクト名にアンダースコアとバージョンを含む要件指定子を処理できないバグを修正しました。

  • DataFrame.limit() で、 offset が使用され、親 DataFramelimit を使用する場合のバグを修正しました。これで offset が親 DataFrame の limit に影響を与えることはなくなりました。

  • DataFrame.write.save_as_table で、 API の読み込みから作成された DataFrames が無効な列名 $1 のためにSnowflakeにデータを保存できないバグを修正しました。

動作の変更

  • date_format の動作を変更しました。

    • format 引数をオプションから必須に変更しました。

    • 返された結果は、日付オブジェクトから日付形式の文字列に変更されました。

  • ウィンドウ関数またはシーケンス依存データ生成(normalzipfuniformseq1seq2seq4seq8)関数が使用されている場合は、クエリ生成時にソートおよびフィルター操作がフラット化されなくなります。

バージョン1.9.0(2023年10月16日)

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

新機能

  • Python 3.11ランタイム環境のサポートを追加しました。

  • ARRAYOBJECT リテラルに対する PythonObjJSONEncoder JSON シリアライズ可能オブジェクトのサポート。

依存関係の更新

  • 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 登録時の VOLATILEIMMUTABLE キーワードへのサポートを追加しました。

  • DataFrame.save_as_table を使用してデータフレームを保存する際にクラスタリングキーを指定できるようになりました。

  • Session.create_dataframe を使用してデータフレームを作成する際に schemaIterable オブジェクト入力を受け入れるようになりました。

  • 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 を無効にするバグを修正しました。

  • 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_integrationssecrets を追加しました。

  • snowflake.snowpark.functions の新しい関数 array_flattenflatten へのサポートが追加されました。

  • 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_sort

    • sort_array

    • array_min

    • array_max

    • explode_outer

  • Session.add_requirements または Session.add_packages 経由で指定された純粋なPythonパッケージのサポートを追加しました。パッケージがSnowflake Anacondaチャネルに存在しなくても、ストアドプロシージャや UDFs で使用できるようになりました。

  • Sessionパラメーター custom_packages_force_upload_enabledcustom_packages_upload_enabled を追加し、上記の純粋なPythonパッケージ機能をサポートするようにしました。どちらのパラメーターもデフォルトは False です。

  • conda環境 YAML ファイルを Session.add_requirements に渡すことにより、パッケージ要件の指定に対するサポートを追加しました

  • バインド変数を含むマルチクエリデータフレームの非同期実行に対するサポートを追加しました。

  • DataFrame.rename で複数の列名を変更するためのサポートを追加しました。

  • Geometryデータ型のサポートを追加しました。

  • ストアドプロシージャの session.sql() でparamのサポートを追加しました。

  • ユーザー定義集計関数(UDAFs)のサポートを追加しました。この機能は現在プライベートプレビュー中です。

  • ベクトル化されたユーザー定義テーブル関数(ベクトル化された UDTFs)のサポートを追加しました。この機能は現在公開プレビュー中です。

  • Snowflakeタイムスタンプのバリアント(つまり、 TIMESTAMP_NTZTIMESTAMP_LTZTIMESTAMP_TZ)のサポートを追加しました。

    • TimestampType コンストラクターの引数に TimestampTimezone を追加しました。

    • UDFs を登録する際、関数に注釈を付けるための NTZLTZ、および 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.aggDataFrame.describe などの関数による集計結果で、列名から非表示文字が取り除かれなくなりました。

新機能および更新

  • Python 3.9ランタイム環境のサポートを追加しました。

  • snowflake.snowpark.functions に新しい関数のサポートが追加されました。

  • array_generate_range

  • array_unique_agg

  • collect_set

  • sequence

  • ストアドプロシージャの登録と呼び出しに、 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 チェックを破損する、 ColumnOrNameColumnOrLiteralStrColumnOrSqlExprLiteralType および 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 を使用すると、加算と減算の演算が簡単になります。

    • ddaydiff

    • dexplode

    • darray_distinct

    • dregexp_extract

    • dstruct

    • dformat_number

    • dbround

    • dsubstring_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 を使用した動的テーブルの作成(プライベートプレビュー内)のサポートが追加されました。

  • バインド変数をサポートするために、オプションの引数 paramssession.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.collectDataframe.collect_no_wait にキーワード引数 log_on_exception を追加しました。

バグ修正

  • 別の DataFrame セット操作の後に DataFrame セット操作(DataFrame.subtractDataFrame.union など)が呼び出され、 DataFrame.select または DataFrame.with_column が例外をスローするバグを修正しました。

  • 連鎖した並べ替えステートメントが SQL 簡略化機能によって上書きされるバグを修正しました。

改善

  • デフォルトで定数サブクエリエイリアス(SNOWPARK_LEFTSNOWPARK_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_urlsnowflake.snowflake.files.SnowflakeFile.open() (プライベートプレビュー)に追加して、

バグ修正

  • Snowparkセッションの作成時に paramstyleqmark に上書きするバグを修正しました。

  • df.join(..., how="cross")SnowparkJoinException: (1112): Unsupported using join type 'Cross' で失敗するバグを修正しました。

  • 連鎖関数の呼び出しから作成された DataFrame 列をクエリすると、間違った列名が使用されるバグを修正しました。

バージョン1.1.0(2023-01-26)

新機能および更新

  • 関数に ascasc_nulls_firstasc_nulls_lastdescdesc_nulls_firstdesc_nulls_lastdate_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_SIMPLIFIERTrue になります。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 簡略化を使用することをお勧めします。