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.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
リテラルに対する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 登録時の
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 を無効にするバグを修正しました。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_sort
sort_array
array_min
array_max
explode_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_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
チェックを破損する、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
を使用すると、加算と減算の演算が簡単になります。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
を使用した動的テーブルの作成(プライベートプレビュー内)のサポートが追加されました。バインド変数をサポートするために、オプションの引数
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 簡略化を使用することをお勧めします。