Snowpark Python APIへの変更¶
このトピックでは、リリースのバージョンに関する情報を提供します。
このトピックの内容:
バージョン1.3.0(2023-03-28)¶
Snowparkライブラリのバージョン1.3.0では、いくつかの新機能が導入されています。
新機能¶
functions.initcap()
にdelimiters
パラメータのサポートを追加しました。異なる数の入力式を受け入れる
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¶
Snowparkライブラリのバージョン1.2.0では、いくつかの新機能が導入されています。
新機能¶
ストアドプロシージャの登録時に、生成されたスクリプトでソースコードをコメントとして表示するためのサポートを追加しました。これはデフォルトで有効になっています。登録時に
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¶
Snowparkライブラリのバージョン1.1.0では、いくつかの新機能が導入されています。
新機能¶
関数に
asc
、asc_nulls_first
、asc_nulls_last
、desc
、desc_nulls_first
、desc_nulls_last
、date_part
、 およびunix_timestamp
を追加しました。列名とデータ型のペアのリストを返すプロパティ
DataFrame.dtypes
を追加しました。次のエイリアスを追加しました。
functions.sql_expr()
のfunctions.expr()
。functions.to_date()
のfunctions.date_format()
。functions.seq8()
のfunctions.monotonically_increasing_id()
。functions.to_timestamp()
のfunctions.from_unixtime()
。
バグの修正¶
列のエイリアスと結合を適切に処理しないケースが見られた 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 簡略化を使用することをお勧めします。
バージョン1.0.0¶
Snowparkライブラリのバージョン1.0.0では、いくつかの新機能が導入されています。
バージョン0.12.0¶
Snowparkライブラリのバージョン0.12.0では、いくつかの新機能および改善が導入されています。
新機能¶
非同期ジョブ用に新しい APIs を追加しました。
Session.create_async_job()
でクエリIDからAsyncJob
インスタンスを作成します。AsyncJob.result()
は、引数result_type
を受け入れて、さまざまな形式で結果を返すようになりました。AsyncJob.to_df()
は、この非同期ジョブの結果から構築されたDataFrame
を返します。AsyncJob.query()
は、実行されたクエリの SQL テキストを返します。
DataFrame.agg()
およびRelationalGroupedDataFrame.agg()
は、可変長の引数を受け入れるようになりました。パラメーター
lsuffix
およびrsuffix
をDataFrame.join()
およびDataFrame.cross_join()
に追加して、重複する列の名前を簡単に変更できるようにしました。DataFrame.cache_result()
を呼び出した後に仮テーブルを削除できるように、Table.drop_table()
を追加しました。Table
はコンテキストマネージャーでもあるため、使用後にwith
ステートメントを使用してキャッシュ仮テーブルをドロップできます。Session.use_secondary_roles()
を追加しました。関数
first_value()
とlast_value()
を追加しました。(@chasleslrによる寄稿)using_columns
のエイリアスとしてon
を、DataFrame.join()
のjoin_type
のエイリアスとしてhow
を追加しました。
バグの修正¶
schema
の名前に特殊文字が含まれている場合にエラーが発生するSession.create_dataframe()
のバグを修正しました。Session.read.option()
に設定されたオプションがデフォルト値としてDataFrame.copy_into_table()
に渡されないバグを修正しました。コピーオプションの値に一重引用符が含まれている場合に
DataFrame.copy_into_table()
でエラーが発生するバグを修正しました。
バージョン0.11.0¶
Snowparkライブラリのバージョン0.11.0では、いくつかの新機能および改善が導入されています。
動作の変更¶
Session.add_packages()
Snowflake Anacondaチャンネルでパッケージのバージョンが見つからない場合に、ValueError
が発生するようになりました。以前は、Session.add_packages()
に成功し、 UDF またはストアドプロシージャの登録ステップの後でSnowparkSQLException
例外が発生しました。
新機能¶
ステージファイルをストリームとしてダウンロードするためのサポートとしてメソッド
FileOperation.get_stream()
を追加しました。int
引数を受け入れるためのサポートをfunctions.ntiles()
に追加しました。次のエイリアスを追加しました。
functions.call_builtin()
のfunctions.call_function()
。functions.builtin()
のfunctions.function()
。DataFrame.sort()
のDataFrame.order_by()
DataFrame.sort()
のDataFrame.orderBy()
DataFrame
クラスではなく、より正確なTable
クラスを返すようにDataFrame.cache_result()
を改善しました。StoredProcedure
を呼び出すときに、session
を最初の引数として許可するサポートを追加しました。
改善¶
該当する場合にクエリをフラット化することで、ネストされたクエリの生成を改善しました。この改善は、
Session.sql_simplifier_enabled = True
を設定すると有効にできます。DataFrame.select()
、DataFrame.with_column()
、DataFrame.drop()
、およびその他の選択に関連した APIs の SQL はさらにフラット化されるようになりました。DataFrame.union()
、DataFrame.union_all()
、DataFrame.except_()
、DataFrame.intersect()
、DataFrame.union_by_name()
は、複数の集合演算子がチェーンされているときに生成される SQL をフラット化しました。非同期ジョブ APIs の型注釈を改善しました。
バグの修正¶
Table.update()
、Table.delete()
、Table.merge()
が存在しない仮テーブルを参照しようとするバグを修正しました。
バージョン0.10.0¶
Snowparkライブラリのバージョン0.10.0では、いくつかの新機能および改善が導入されています。
新機能¶
非同期クエリでSnowparkデータフレームを評価するための実験的な APIs を追加しました。
Snowparkデータフレーム(クエリを実行する)の次のアクション APIs にキーワード引数
block
を追加して、非同期評価を可能にしました。DataFrame.collect()
、DataFrame.to_local_iterator()
、DataFrame.to_pandas()
、DataFrame.to_pandas_batches()
、DataFrame.count()
、DataFrame.first()
、DataFrameWriter.save_as_table()
、DataFrameWriter.copy_into_location()
、Table.delete()
、Table.update()
、Table.merge()
。
非同期評価を可能にするメソッド
DataFrame.collect_nowait()
を追加しました。非同期で実行されたクエリから結果を取得し、そのステータスを確認するクラス
AsyncJob
を追加しました。
Session.write_pandas()
でのtable_type
のサポートを追加しました。table_type
オプションから、temporary
、temp
、およびtransient
が選択できるようになりました。SnowparkでPython構造化データ(
list
、tuple
、およびdict
)をリテラル値として使用するためのサポートを追加しました。functions.sproc()
とsession.sproc.register()
にキーワード引数execute_as
を追加して、ストアドプロシージャを呼び出し元または所有者として登録できるようにしました。Snowflakeのステージからファイルを読み取るときに、事前構成されたファイル形式を指定するためのサポートを追加しました。
改善¶
Snowparkセッションの詳細を表示するためのサポートを追加しました。
バグの修正¶
テーブル名が完全修飾されていて、テーブルが既存の場合に、
DataFrame.copy_into_table()
とDataFrameWriter.save_as_table()
が誤って新しいテーブルを作成するバグを修正しました。
非推奨¶
Session.write_pandas()
にあるキーワード引数create_temp_table
を廃止しました。Pythonリストまたはタプルにラップされた引数を使用した UDFs の呼び出しを廃止しました。リストまたはタプルなしで可変長引数を使用できます。
依存関係の更新¶
snowflake-connector-python
を2.7.12に更新しました。
バージョン0.9.0¶
Snowparkライブラリのバージョン0.9.0には、いくつかの新機能および改善が導入されています。
新機能¶
UDFs の登録時に、生成されたスクリプトでソースコードをコメントとして表示するためのサポートを追加しました。この機能はデフォルトでオンになっています。オフにするには、
register()
または@udf()
を呼び出すときに、新しいキーワード引数source_code_display
をFalse
として渡します。DataFrame.select()
、DataFrame.with_column()
、およびDataFrame.with_columns()
からテーブル関数を呼び出すためのサポートを追加しました。これらは、列の型table_function.TableFunctionCall
のパラメーターを受け取るようになりました。キーワード引数
overwrite
をsession.write_pandas()
に追加して、Snowflakeテーブルの内容をPandas DataFrame のコンテンツで上書きできるようにしました。キーワード引数
column_order
をdf.write.save_as_table()
に追加して、追加モードでテーブルにデータを挿入する際の一致規則を指定します。ファイルストリーム経由でローカルファイルをステージにアップロードするメソッド
FileOperation.put_stream()
を追加しました。テーブル関数結合の出力から得られる列の名前のエイリアスを許可するメソッド
TableFunctionCall.alias()
およびTableFunctionCall.as_()
を追加しました。現在アクティブなSnowparkセッションを取得するために、関数
get_active_session()
をモジュールsnowflake.snowpark.context
に追加しました。
改善¶
入力
max_
およびmin_
の型を推測し、制限をそれぞれIntegerType
またはFloatType
にキャストするために、関数function.uniform()
を改善しました。
バグの修正¶
statement_params
が関数に渡されない場合に、バッチ挿入でエラーが発生しないバグを修正しました。session.create_dataframe()
がディクショナリと特定のスキーマで呼び出されたときに、列名を引用符で囲む必要があるバグを修正しました。テーブルがすでに存在し、
df.write.save_as_table()
の呼び出し時に追加モードになっている場合に、テーブルの作成をスキップする必要があるバグを修正しました。UDFs の登録時に、アンダースコアのあるサードパーティパッケージを追加できないバグを修正しました。
バージョン0.8.0¶
Snowparkライブラリのバージョン0.8.0では、いくつかの新機能および改善が導入されています。
新機能¶
次のメソッドにキーワードのみの引数
statement_params
を追加して、ステートメントレベルのパラメーターを指定できるようにしました。クラス
snowflake.snowpark.Dateframe
における、collect
、to_local_iterator
、to_pandas
、to_pandas_batches
、count
、copy_into_table
、show
、create_or_replace_view
、create_or_replace_temp_view
、first
、cache_result
、random_split
。クラス
snowflake.snowpark.Table
における、update
、delete
、merge
。クラス
snowflake.snowpark.DataFrameWriter
における、save_as_table
、copy_into_location
。クラス
snowflake.snowpark.DataFrameStatFunctions
における、approx_quantile
、statement_params
、cov
、crosstab
。クラス
snowflake.snowpark.udf.UDFRegistration
における、register
、register_from_file
。クラス
snowflake.snowpark.udtf.UDTFRegistration
における、register
、register_from_file
。クラス
snowflake.snowpark.stored_procedure.StoredProcedureRegistration
における、register
、register_from_file
。snowflake.snowpark.functions
での、udf
、udtf
、sproc
。
session.call()
への入力引数としてColumn
のサポートが追加されました。df.write.save_as_table()
でのtable_type
のサポートを追加しました。table_type
オプションから、temporary
、temp
、およびtransient
が選択できるようになりました。
改善¶
session.use_*
メソッドにオブジェクト名の検証を追加しました。SQL のクエリタグを更新して、タグに特殊文字が含まれている場合にタグをエスケープするようになりました。
不足しているパッケージを追加するときに、Anacondaの条件が承認されるかどうかを確認するチェックを追加しました。
バグの修正¶
session.create_dataframe()
内にある文字列の列の制限された長さを修正しました。入力データがリストのみの場合に、
session.create_dataframe()
が誤って0とFalse
をNone
に変換していたバグを修正しました。大規模なローカルデータセットを使用して
session.create_dataframe()
を呼び出すと、仮テーブルが2回作成される場合があるバグを修正しました。function.trim()
の定義を SQL 関数の定義に合わせました。Snowpark
function.sum()
の代わりにPythonシステム定義(組み込み関数)sum
を使用すると、snowpark-pythonがハングする問題を修正しました。
バージョン0.7.0¶
Snowparkライブラリのバージョン0.7.0では、いくつかの新機能および改善が導入されています。
新機能¶
ユーザー定義のテーブル関数(UDTFs)のサポートが追加されました。
関数
snowflake.snowpark.functions.udtf()
を使用してUDTFを登録するか、デコレータとして使用してUDTFを登録します。Session.udtf.register()
を使用してUDTFを登録することもできます。Session.udtf.register_from_file()
を使用して、PythonファイルからUDTFを登録します。
Snowflakeの組み込みテーブル関数とUDTFsの両方を含むテーブル関数をクエリするようにAPIsを更新しました。
関数
snowflake.snowpark.functions.table_function()
を使用して、テーブル関数を表す呼び出し可能オブジェクトを作成し、それを使用してクエリでテーブル関数を呼び出します。または、関数
snowflake.snowpark.functions.call_table_function()
を使用してテーブル関数を呼び出します。テーブル関数を横方向に結合するときに
partition by
とorder by
を指定するover
句のサポートが追加されました。Session.table_function()
とDataFrame.join_table_function()
を更新してTableFunctionCall
インスタンスを受け入れます。
重大な変更¶
functions.udf()
とfunctions.sproc()
を使用して関数を作成するときに、imports
またはpackages
引数に空のリストを指定して、このUDFまたはストアドプロシージャにインポートまたはパッケージが使用されていないことを示すことができるようになりました。以前は、空のリストを指定すると、関数はセッションレベルのインポートまたはパッケージを使用していました。types.py
のデータ型の__repr__
実装を改善しました。未使用のtype_name
プロパティは削除されました。SQLエラー用のSnowpark固有の例外クラスを追加しました。これにより、Pythonコネクタの以前の
ProgrammingError
が置き換えられます。
改善¶
スレッドごとに初めて呼び出されたときにUDFまたはUDTFにロックを追加しました。
UDF の作成中に発生したピクルスエラーのエラーメッセージを改善しました。
失敗したクエリをログに記録するときにクエリIDを含めました。
バグの修正¶
DataFrame.to_pandas()
を呼び出すときに、非整数データ(タイムスタンプなど)が整数に変換されることがあるバグを修正しました。列にスペースが含まれている場合に
DataFrameReader.parquet()
がParquetファイルを読み取れなかったバグを修正しました。推測されたスキーマを含むファイルを読み取ることによってデータフレームが作成されたときに
DataFrame.copy_into_table()
が失敗するバグを修正しました。
非推奨¶
Session.flatten()
およびDataFrame.flatten()
。
依存関係の更新¶
cloudpickle
<=2.0.0
のバージョンを制限しました。
バージョン0.6.0¶
Snowparkライブラリのバージョン0.6.0では、いくつかの新機能および改善が導入されています。
新機能¶
Python UDFのバッチAPIを介したベクトル化されたUDFsのサポートが追加されました。Python UDFのバッチAPIを使用すると、入力行のバッチを Pandas DataFrames として受け取り、結果のバッチを Pandas配列 または シリーズ として返すPython関数を定義できます。これにより、SnowparkでのUDFs呼び出しのパフォーマンスを改善できます。
ステージでParquet、Avro、またはORCファイルを読み取ることによって作成される場合、デフォルトでDataFrameのスキーマを推測するためのサポートが追加されました。
関数
current_session()
、current_statement()
、current_user()
、current_version()
、current_warehouse()
、date_from_parts()
、date_trunc()
、dayname()
、dayofmonth()
、dayofweek()
、dayofyear()
、grouping()
、grouping_id()
、hour()
、last_day()
、minute()
、next_day()
、previous_day()
、second()
、month()
、monthname()
、quarter()
、year()
、current_database()
、current_role()
、current_schema()
、current_schemas()
、current_region()
、current_avaliable_roles()
、add_months()
、any_value()
、bitnot()
、bitshiftleft()
、bitshiftright()
、convert_timezone()
、uniform()
、strtok_to_array()
、sysdate()
、time_from_parts()
、timestamp_from_parts()
、timestamp_ltz_from_parts()
、timestamp_ntz_from_parts()
、timestamp_tz_from_parts()
、weekofyear()
、percentile_cont()
をsnowflake.snowflake.functions
に追加しました。
改善¶
Session.create_dataframe()
メソッドを使用して特定のスキーマで空のDataFrame
を作成するためのサポートが追加されました。データフレームを評価するときに、いくつかのログ(実行されたクエリなど)のログレベルを
INFO
からDEBUG
に変更しました。ピクルスエラーが原因で UDF の作成に失敗した場合のエラーメッセージが改善されました。
0.4.0で廃止された次のAPIsを削除しました:
DataFrame.groupByGroupingSets()
、DataFrame.naturalJoin()
、DataFrame.joinTableFunction
、DataFrame.withColumns()
、Session.getImports()
、Session.addImport()
、Session.removeImport()
、Session.clearImports()
、Session.getSessionStage()
、Session.getDefaultDatabase()
、Session.getDefaultSchema()
、Session.getCurrentDatabase()
、Session.getCurrentSchema()
、Session.getFullyQualifiedCurrentSchema()
。バージョン>=
4.1.0
の新しい依存関係としてtyping-extension
を追加しました。
バグの修正¶
Session.create_dataframe()
メソッドのpandasのハード依存関係を削除しました。
バージョン0.5.0¶
Snowparkライブラリのバージョン0.5.0では、いくつかの新機能および改善が導入されています。
新機能¶
ストアドプロシージャ API を追加しました。
Session.sproc
プロパティとsproc()
をsnowflake.snowpark.functions
に追加して、ストアドプロシージャを登録できるようにしました。名前でストアドプロシージャを呼び出すための
Session.call
を追加しました。UDFRegistration.register_from_file()
を追加して、Pythonソースファイルまたはzipファイルから直接UDFsを登録できるようにしました。UDFを説明するために
UDFRegistration.describe()
を追加しました。データフレームをランダムに分割する方法を提供するために
DataFrame.random_split()
を追加しました。関数
md5()
、sha1()
、sha2()
、ascii()
、initcap()
、length()
、lower()
、lpad()
、ltrim()
、rpad()
、rtrim()
、repeat()
、soundex()
、regexp_count()
、replace()
、charindex()
、collate()
、collation()
、insert()
、left()
、right()
、endswith()
をsnowflake.snowpark.functions
に追加しました。call_udf()
関数はリテラル値も受け入れるようになりました。array_agg()
にdistinct
キーワードを指定しました。
バグの修正¶
Column.cast(IntegerType())
が使用された場合にDataFrame.to_pandas()
に文字列の列が含まれる問題を修正しました。複数の文字列の列がある場合の
DataFrame.describe()
のバグを修正しました。
バージョン0.4.0¶
Snowparkライブラリのバージョン0.4.0では、いくつかの新機能および改善が導入されています。
新機能¶
UDFsを定義するときに使用するAnacondaパッケージを指定できるようになりました。
クラス
Session
にadd_packages()
、get_packages()
、clear_packages()
、およびremove_package()
を追加しました。Session
にadd_requirements()
を追加して、要件ファイルを使用して、このセッションで使用するパッケージを指定できるようにしました。UDFを作成するときにUDFレベルのAnacondaパッケージの依存関係を示すために、関数
snowflake.snowpark.functions.udf()
とメソッドUserDefinedFunction.register()
にパラメーターpackages
を追加しました。UDFレベルのコードインポートを指定するために、パラメーター
imports
をsnowflake.snowpark.functions.udf()
とUserDefinedFunction.register()
に追加しました。関数
udf()
とUserDefinedFunction.register()
にパラメーターsession
を追加して、複数のセッションがある場合にUDFを作成するために使用するセッションを指定できるようにしました。UDFを定義するときにGeographyおよびバリアントデータの型ヒントとして使用される型
Geography
およびVariant
をsnowflake.snowpark.types
に追加しました。Geography geoJSONデータのサポートが追加されました。
テーブル操作用の
DataFrame
のサブクラスであるTable
を追加しました。メソッド
update
およびdelete
は、Snowflakeのテーブルの行を更新および削除します。メソッド
merge
は、データをDataFrame
からTable
にマージします。追加のパラメーター
seed
を使用してメソッドDataFrame.sample()
をオーバーライドしました。これはテーブルでは機能しますが、ビューとサブクエリでは機能しません。Snowflakeデータベースから返された結果セットが大きすぎる場合に、イテレータから結果を取得できるように
DataFrame.to_local_iterator()
とDataFrame.to_pandas_batches()
を追加しました。DataFrame
で実行された操作を仮テーブルにキャッシュするためのDataFrame.cache_result()
を追加しました。元のDataFrame
に対する後続の操作は、キャッシュされた結果DataFrame
には影響しません。DataFrame
を評価するために実行されるSQLクエリを取得するためのプロパティDataFrame.queries
を追加しました。セッションから作成された
DataFrames
を評価するためのすべてのSQLクエリを含む、セッションで実行されたSQLクエリを追跡するためのコンテキストマネージャーとしてSession.query_history()
を追加しました。クエリIDとクエリテキストの両方が記録されます。これで、既存の確立された
snowflake.connector.SnowflakeConnection
からSession
インスタンスを作成できます。Session.builder.configs()
でパラメーターconnection
を使用します。use_database()
、use_schema()
、use_warehouse()
、およびuse_role()
をクラスSession
に追加して、セッションの作成後にデータベース/スキーマ/ウェアハウス/ロールを切り替えます。DataFrame
をステージングファイルにアンロードするためのDataFrameWriter.copy_into_table()
を追加しました。DataFrame.unpivot()
を追加しました。一部の集計関数を使用して行を列で並べ替えるための
Column.within_group()
を追加しました。関数
listagg()
、mode()
、div0()
、acos()
、asin()
、atan()
、atan2()
、cos()
、cosh()
、sin()
、sinh()
、tan()
、tanh()
、degrees()
、radians()
、round()
、trunc()
、およびfactorial()
をsnowflake.snowpark.functions
に追加しました。関数
lead()
とlag()
にオプションの引数ignore_nulls
を追加しました。関数
when()
およびiff()
のcondition
パラメーターがSQL式を受け入れるようになりました。
改善¶
すべての関数名とメソッド名は、よりPythonicなスネークケースの命名スタイルを使用するように名前が変更されました。便宜上、一部のキャメルケース名はスネークケースAPIsのエイリアスとして保持されます。スネークケースAPIsを使用することをお勧めします。
クラス
Session
でこれらのメソッドを非推奨にし、同等のスネークケースに置き換えました:getImports()
、addImports()
、removeImport()
、clearImports()
、getSessionStage()
、getDefaultSchema()
、getDefaultSchema()
、getCurrentDatabase()
、およびgetFullyQualifiedCurrentSchema()
。クラス
DataFrame
でこれらのメソッドを非推奨にし、同等のスネークケースに置き換えました:groupingByGroupingSets()
、naturalJoin()
、withColumns()
、およびjoinTableFunction()
プロパティ
DataFrame.columns
は、DataFrame.schema.names
およびSnowflakeデータベース識別子の要件と一致するようになりました。Column.__bool__()
はTypeError
を発生させるようになりました。これにより、Column
オブジェクトでの論理演算子and
、or
、not
の使用が禁止されます。たとえば、col("a") > 1 and col("b") > 2
はTypeError
を発生させます。代わりに(col("a") > 1) & (col("b") > 2)
を使用してください。PutResult
とGetResult
をサブクラスNamedTuple
に変更しました。ローカルパスまたはステージの場所にスペースまたはその他の特殊文字が含まれている場合にエラーが発生するバグを修正しました。
DataFrame.describe()
を変更して、例外を発生させる代わりに、数値および文字列以外の列が無視されるようにしました。
依存関係の更新¶
snowflake-connector-python
が2.7.4に更新されました。
バージョン0.3.0¶
Snowparkライブラリのバージョン0.3.0では、いくつかの新機能および改善が導入されています。
新機能¶
エイリアス
Column.in_()
があるColumn.isin()
を追加しました。cast()
の特別バージョンであるColumn.try_cast()
を追加しました。文字列式を他の型にキャストしようとして、キャストが不可能な場合はnull
を返します。文字列の列を処理するために
Column.startswith()
とColumn.substr()
を追加しました。Column.cast()
は、DataType
インスタンスに加えて、キャスト型を示すstr
値も受け入れるようになりました。DataFrame
の統計を要約するためにDataFrame.describe()
を追加しました。DataFrame
のクエリプランを出力するためにDataFrame.explain()
を追加しました。DataFrame.filter()
およびDataFrame.select_expr()
はSQL式を受け入れるようになりました。オプションで一時テーブルを作成するために、
create_temp_table
という新しいbool
パラメーターをメソッドDataFrame.saveAsTable()
とSession.write_pandas()
に追加しました。DataFrame.except_()
のエイリアスとしてDataFrame.minus()
とDataFrame.subtract()
を追加しました。snowflake.snowpark.functions
モジュールにregexp_replace()
、concat()
、concat_ws()
、to_char()
、current_timestamp()
、current_date()
、current_time()
、months_between()
、cast()
、try_cast()
、greatest()
、least()
、およびhash()
を追加しました。
バグの修正¶
Pandas DataFrameの列名にスペースが含まれている場合に、
Session.createDataFrame(pandas_df)
とSession.write_pandas(pandas_df)
で例外が発生する問題を修正しました。DataFrame.copy_into_table()
がエラーレベルのログエントリを誤って出力することがある問題を修正しました。一部のDataFrame APIsがドキュメントから欠落していたAPIドキュメントの問題を修正しました。
依存関係の更新¶
snowflake-connector-python
を2.7.2に更新しました。これによりpyarrow
の依存関係が6.0.xにアップグレードされます。詳細については、 Pythonコネクタ2.7.2リリースノート をご参照ください。
バージョン0.2.0¶
Snowparkライブラリのバージョン0.2.0では、いくつかの新機能および改善が導入されています。
新機能¶
Pandas DataFrame から DataFrame を作成するための
createDataFrame()
メソッドを追加しました。SnowflakeにあるテーブルにPandas DataFrame を書き込み、Snowpark DataFrame オブジェクトを返してもらうための
write_pandas()
メソッドを追加しました。ウィンドウ関数を呼び出すための新しいクラスとメソッドを追加しました。
新しい関数として、ウィンドウパーティション内の他の値に関する値の累積分布を見つけるための
cume_dist()
と、ウィンドウパーティション内にある各行の一意な行番号を返すrow_number()
を追加しました。DataFrameStatFunctions
クラスの DataFrames の統計を計算するための関数を追加しました。DataFrameNaFunctions
クラスの DataFrame で欠落している値を処理するための関数を追加しました。新しいメソッド
rollup()
、cube()
、およびpivot()
を DataFrame クラスに追加しました。DataFrame
groupByGroupingSets
メソッドで使用してSQL GROUP BY GROUPING SETS
を実行できるGroupingSets
クラスを追加しました。ステージとの間でファイルをアップロードおよびダウンロードするために使用できる新しい
FileOperation(session)
クラスを追加しました。ステージ内のファイルからテーブルにデータをロードするための
copy_into_table()
メソッドを追加しました。CASE 式で、関数
when
およびotherwise
が、Column
オブジェクトに加えてPython型を受け入れるようになりました。UDF を登録するときに、オプションで
replace
パラメーターをTrue
に設定して、既存の UDF を同じ名前で上書きできるようになりました。
改善¶
UDFsサーバーにアップロードされる前に圧縮されるようになりました。これにより約10倍小さくなり、大きなMLモデルファイルを使用している場合に役立ちます。
UDFのサイズが8196バイト未満の場合、ステージにアップロードされるのではなく、インラインコードとしてアップロードされます。
バグの修正¶
ステートメント
df.select(when(col("a") == 1, 4).otherwise(col("a"))), [Row(4), Row(2), Row(3)]
で例外が発生する問題を修正しました。大規模なローカルデータからDataFrameが作成されたときに、
df.toPandas()
で例外が発生する問題を修正しました。