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.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

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_urlsnowflake.snowflake.files.SnowflakeFile.open() (プライベートプレビュー)に追加して、

バグの修正

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

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

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

バージョン1.1.0

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

新機能

  • 関数に ascasc_nulls_firstasc_nulls_lastdescdesc_nulls_firstdesc_nulls_lastdate_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_SIMPLIFIERTrue になります。snowpark-pythonでは、 session.sql_simplifier_enabled はデフォルトで PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER の値を読み取ります。つまり、Snowflake 7.3のリリース後、デフォルトで SQL 簡略化が有効になります。これをオフにするには、Snowflakeで PYTHON_SNOWPARK_USE_SQL_SIMPLIFIERFalse に設定するか、Snowparkから session.sql_simplifier_enabled = False を実行します。より簡潔な SQL の生成ができるように、SQL 簡略化を使用することをお勧めします。

バージョン1.0.0

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

新機能

  • GENERATOR テーブル関数を使用して新しい DataFrame を作成するために、 Session.generator() を追加しました。

  • セキュア UDF または UDTF を作成する関数に SECURE パラメーターを追加しました。

バージョン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 および rsuffixDataFrame.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 オプションから、 temporarytemp、および transient が選択できるようになりました。

  • SnowparkでPython構造化データ(listtuple、および 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_displayFalse として渡します。

  • DataFrame.select()DataFrame.with_column()、および DataFrame.with_columns() からテーブル関数を呼び出すためのサポートを追加しました。これらは、列の型 table_function.TableFunctionCall のパラメーターを受け取るようになりました。

  • キーワード引数 overwritesession.write_pandas() に追加して、Snowflakeテーブルの内容をPandas DataFrame のコンテンツで上書きできるようにしました。

  • キーワード引数 column_orderdf.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 における、 collectto_local_iteratorto_pandasto_pandas_batchescountcopy_into_tableshowcreate_or_replace_viewcreate_or_replace_temp_viewfirstcache_resultrandom_split

    • クラス snowflake.snowpark.Table における、 updatedeletemerge

    • クラス snowflake.snowpark.DataFrameWriter における、 save_as_tablecopy_into_location

    • クラス snowflake.snowpark.DataFrameStatFunctions における、 approx_quantilestatement_paramscovcrosstab

    • クラス snowflake.snowpark.udf.UDFRegistration における、 registerregister_from_file

    • クラス snowflake.snowpark.udtf.UDTFRegistration における、 registerregister_from_file

    • クラス snowflake.snowpark.stored_procedure.StoredProcedureRegistration における、 registerregister_from_file

    • snowflake.snowpark.functions での、 udfudtfsproc

  • session.call() への入力引数として Column のサポートが追加されました。

  • df.write.save_as_table() での table_type のサポートを追加しました。 table_type オプションから、 temporarytemp、および transient が選択できるようになりました。

改善

  • session.use_* メソッドにオブジェクト名の検証を追加しました。

  • SQL のクエリタグを更新して、タグに特殊文字が含まれている場合にタグをエスケープするようになりました。

  • 不足しているパッケージを追加するときに、Anacondaの条件が承認されるかどうかを確認するチェックを追加しました。

バグの修正

  • session.create_dataframe() 内にある文字列の列の制限された長さを修正しました。

  • 入力データがリストのみの場合に、 session.create_dataframe() が誤って0と FalseNone に変換していたバグを修正しました。

  • 大規模なローカルデータセットを使用して 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 byorder 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.joinTableFunctionDataFrame.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パッケージを指定できるようになりました。

  • クラス Sessionadd_packages()get_packages()clear_packages()、および remove_package() を追加しました。

  • Sessionadd_requirements() を追加して、要件ファイルを使用して、このセッションで使用するパッケージを指定できるようにしました。

  • UDFを作成するときにUDFレベルのAnacondaパッケージの依存関係を示すために、関数 snowflake.snowpark.functions.udf() とメソッド UserDefinedFunction.register() にパラメーター packages を追加しました。

  • UDFレベルのコードインポートを指定するために、パラメーター importssnowflake.snowpark.functions.udf()UserDefinedFunction.register() に追加しました。

  • 関数 udf()UserDefinedFunction.register() にパラメーター session を追加して、複数のセッションがある場合にUDFを作成するために使用するセッションを指定できるようにしました。

  • UDFを定義するときにGeographyおよびバリアントデータの型ヒントとして使用される型 Geography および Variantsnowflake.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 オブジェクトでの論理演算子 andornot の使用が禁止されます。たとえば、 col("a") > 1 and col("b") > 2TypeError を発生させます。代わりに (col("a") > 1) & (col("b") > 2) を使用してください。

  • PutResultGetResult をサブクラス 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() で例外が発生する問題を修正しました。