Python用Snowparkライブラリの2024年リリースノート¶
この記事には、 Snowpark Library for Python のリリースノートが含まれています。また、該当する場合は以下が含まれます。
動作の変更
新機能
顧客向けバグ修正
Snowflake は、 Snowpark Library for Python の更新にセマンティックバージョニングを使用します。
ドキュメントについては、 Python用Snowpark開発者ガイド をご参照ください。
警告
Python 3.8が サポート終了 に達したため、Python 3.8でSnowpark-pythonを使用する際に非推奨の警告がトリガーされます。詳細については、 Snowflake Pythonランタイムのサポート をご参照ください。Snowpark Python 1.24.0は、 Anacondaのポリシー に従い、Python 3.8をサポートする最後のクライアントとサーバーのバージョンになります。既存のPython 3.8オブジェクトをPython 3.9以上にアップグレードしてください。
バージョン1.26.0(2024-12-05)¶
新機能¶
Sessionクラスのプロパティversionとクラスメソッドget_active_sessionのサポートを追加しました。新しいメソッドと変数が追加され、データ型の取り扱いと JSON のシリアライズ/デシリアライズが強化されました。
DataType、その派生クラス、およびStructFieldに対して:type_name: データの型名を返します。simple_string: データの単純な文字列表現を提供します。json_value: データを JSON と互換性のある値として返します。json: データを JSON 文字列に変換します。
ArrayType、MapType、StructField、PandasSeriesType、PandasDataFrameType、StructTypeに対して:from_json: これらの型を JSON データから作成できるようにします。
MapTypeに対して:keyType: マップのキーvalueType: マップの値
SessionBuilderのメソッドappNameのサポートを追加しました。DataFrame.unpivotのinclude_nulls引数のサポートを追加しました。functions.pyで以下の関数のサポートを追加しました。size: 配列、オブジェクト、マップの列のサイズを取得するためのものです。collect_list:array_aggのエイリアス。concat_ws_ignore_nulls: NULL値を無視して文字列を区切り文字で連結します。substringはlen引数をオプションにします。
内部使用用にセッションにパラメーター
ast_enabledを追加しました(デフォルト:False)。
改善¶
以下を
DataFrame.create_or_replace_dynamic_tableに指定するサポートを追加しました。iceberg_config: 以下のIceberg構成オプションを保持できるディクショナリ。external_volumecatalogbase_locationcatalog_syncstorage_serialization_policy
DataFrame.print_schemaにネストされたデータ型のサポートを追加しましたDataFrame.print_schemaへのlevelパラメーターのサポートを追加しました。以下のサポートを追加することにより、
DataFrameReaderおよびDataFrameWriterAPI の柔軟性が向上しました。DataFrameReaderとDataFrameWriterにformatメソッドを追加し、結果のロードまたはアンロード時にファイル形式を指定できるようにしました。DataFrameReaderにformatと連動するloadメソッドを追加しました。DataFrameWriterにformatと連動するsaveメソッドを追加しました。DataFrameReaderとDataFrameWriterのoptionsメソッドにキーワード引数の読み取りサポートを追加しました。
Python 3.11のcloudpickle依存関係を緩和し、ビルド要件を簡素化しました。しかしPython 3.11では、
cloudpickle==2.2.1が唯一のサポートバージョンです。
バグ修正¶
ダイナミックピボットが一般公開されたため、ダイナミックピボット機能がプライベートプレビューであることを示す警告を削除しました。
session.read.optionsにおいて、Falseのブール値が、生成されたファイル形式においてTrueとして誤って解析されていたバグを修正しました。
依存関係の更新¶
python-dateutilにランタイム依存関係を追加しました。
Snowpark Pandas API の更新¶
新機能¶
argがpandasSeriesまたはcollections.abc.Mappingの場合のSeries.mapを部分的なサポートを追加しました。__missing__を実装しているがcollections.defaultdictのインスタンスではないdictのインスタンスはサポートされません。DataFrame.alignとSeries.alignのaxis=1とaxis=Noneへのサポートを追加しました。pd.json_normalizeのサポートを追加しました。axis=0、freq=None、 およびlimit=NoneでGroupBy.pct_changeのサポートを追加しました。DataFrameGroupBy.__iter__およびSeriesGroupBy.__iter__のサポートを追加しました。np.sqrt、np.trunc、np.floor、numpy trig関数、np.exp、np.abs、np.positive、およびnp.negativeのサポートを追加しました。データフレーム交換プロトコルのメソッド
DataFrame.__dataframe__()の部分的なサポートを追加しました。
バグ修正¶
シリーズから単一の列をセットすると、予期しない
None値になるdf.locのバグを修正しました。
改善¶
pandasのピボット解除演算子には、センチネル値の代わりに UNPIVOT INCLUDE NULLS を使用してください。
pd.read_excelのドキュメントを改善しました。
バージョン1.25.0(2024-11-13)¶
新機能¶
snowflake.snowpark.dataframeに以下の新しい関数を追加しました。map
改善¶
プロファイラーでターゲットステージがセットされていない場合、
SnowparkSQLExceptionを発生させる代わりに、Session.get_session_stageからのデフォルトステージが使用されます。Session.stored_procedure_profiler.set_active_profilerを呼び出す際に、大文字と小文字が混在する入力を許可しました。DataFrameのアクション関数に、オープンテレメトリー APIs を使用した分散トレースを追加しました。cache_result
ログからopentelemetry警告を削除しました。
バグ修正¶
In式がselectで使用された場合のアクション前とアクション後のクエリ伝搬を修正しました。Session.stored_procedure_profilerが無効の場合にSession.stored_procedure_profiler.get_outputを呼び出すとエラーAttributeErrorが発生するバグを修正しました。
依存関係の更新¶
ランタイムに
protobuf>=5.28とtzlocalへの依存関係を追加しました。開発プロファイルに
protoc-wheel-0への依存関係を追加しました。snowflake-connector-python>=3.12.0, <4.0.0が必要です(>=3.10.0でした)。
Snowpark Pandas API の更新¶
新機能¶
Index.to_numpyのサポートを追加しました。axis=0向けにDataFrame.alignとSeries.alignのサポートを追加しました。snowflake.snowpark.functions.windowのサポートを追加しました。pd.read_pickleのサポートを追加しました(処理にネイティブpandasを使用)。pd.read_htmlのサポートを追加しました(処理にネイティブpandasを使用)。pd.read_xmlのサポートを追加しました(処理にネイティブpandasを使用)。GroupBy.aggregate、DataFrame.aggregate、 およびSeries.aggregateの集計関数"size"とlenのサポートを追加しました。Series.str.lenにおけるリスト値のサポートを追加しました。
バグ修正¶
単一列のデータフレームを単一の呼び出し可能な関数(例:
pd.DataFrame([0]).agg(np.mean))で集計すると、結果の転置に失敗するバグを修正しました。次の
DataFrame.dropna()のバグを修正しました。空の
subset(例:[])を、列がないのではなくすべての列を指定したものとして扱う。その列だけをフィルターするのではなく、スカラー
subsetに対してTypeErrorを発生させる。インデックス内の列でフィルターをかける代わりに、
pandas.Indexのタイプsubsetに対してValueErrorを発生させる。
ノートブック環境でダイナミックピボットを使用する際の
TableNotFoundErrorを軽減するための、スコープ付き読み取り専用テーブルの作成。axis = 1のとき、concat dataframeまたはseriesオブジェクトが同じdataframeから来ている場合のバグを修正しました。
改善¶
不要な結合とテンポラリテーブルの作成を排除することで、スカラーx値を使用した
np.whereを改善しました。結合でピボットをフラット化することで、
get_dummiesパフォーマンスを向上しました。
Snowparkローカルテストの更新¶
新機能¶
snowflake.snowpark.functionsモジュールでは利用できない機能のパッチのサポートを追加しました。snowflake.snowpark.functions.any_valueのサポートを追加しました。
バグ修正¶
Table.updateがVariantType、MapType、ArrayTypeのデータ型を処理できないバグを修正しました。DataFrame.joinで列のエイリアスが正しく解決されず、結合された DataFrame から列を選択する際にエラーが発生するバグを修正しました。ターゲットテーブルのインデックスがデフォルトの
RangeIndexでない場合にTable.updateとTable.mergeが失敗することがあるバグを修正しました。
バージョン1.24.0(2024-10-28)¶
新機能¶
Sessionクラスをスレッドセーフに更新しました。これにより、 DataFrame 変換、 DataFrame アクション、 UDF とストアドプロシージャの登録、および同じSessionオブジェクトを使用する場合の同時ファイルアップロードが可能になります。この機能はデフォルトでは無効になっており、アカウントの
FEATURE_THREAD_SAFE_PYTHON_SESSIONをTrueに設定することで有効になります。複数のスレッドがセッションを使用しているときに、データベースやスキーマの変更などのセッション構成を更新すると、予期しない動作になることがあります。
有効にすると、
DataFrame.queriesAPI から返される内部的に作成された仮テーブル名の一部が論的で確定的ではなくなり、 DataFrame アクションの実行時に異なる場合があります。これは明示的にユーザーが作成した仮テーブルには影響しません。
session.lineage.traceAPI に「サービス」ドメインのサポートを追加しました。デイジーチェーンをサポートするため、
DataFrameWriterの以下のメソッドへのサポートを追加しました。optionoptionspartition_by
snowflake_cortex_summarizeのサポートを追加しました。
改善¶
Pythonで使用できるように、関数
snowflake.snowpark.functions.array_removeの以下の新機能を改善しました。制限後にソートが実行された場合、 SQL の簡略化を無効にします。
以前は、
df.sort().limit()とdf.limit().sort()は、limitの前にsortを付けて同じクエリを生成していました。現在では、df.limit().sort()は、df.limit().sort()を読み取るクエリを生成します。df.limit().sort()に生成されるクエリのパフォーマンスが向上します。これは、レコード数が満たされるとすぐにテーブルスキャンが停止されるためです。
バグ修正¶
仮テーブルの自動クリーンアップが非同期クエリの実行結果に干渉するバグを修正しました。
DataFrame.analytics.time_series_agg関数で、同じスライディング間隔で複数のデータを扱う際のバグを修正しました。Icebergスキーマの構造化オブジェクトのフィールド名に大文字と小文字の不一致が生じるバグを修正しました。
非推奨¶
Python 3.8が サポート終了 に達したため、Python 3.8でSnowpark-pythonを使用する際に非推奨の警告がトリガーされます。詳細については、 Snowflake Pythonランタイムのサポート をご参照ください。
Snowpark 1.24.0は、 Anacondaのポリシー に従い、Python 3.8をサポートする最後のクライアントとサーバーバージョンです。既存のPython 3.8オブジェクトをPython 3.9以上にアップグレードしてください。
Snowpark Pandas API の更新¶
新機能¶
np.subtract、np.multiply、np.divide、 およびnp.true_divideのサポートを追加しました。__array_ufunc__の使用状況を追跡できるようになりました。np.float_power、np.mod、np.remainder、np.greater、np.greater_equal、np.less、np.less_equal、np.not_equal、およびnp.equalのnumpy互換性サポートを追加しました。np.log、np.log2、およびnp.log10のnumpy互換性サポートを追加しました。DataFrameGroupBy.bfill、SeriesGroupBy.bfill、DataFrameGroupBy.ffill、 およびSeriesGroupBy.ffillのサポートを追加しました。Resamplerを使用したonパラメーターのサポートを追加しました。value_counts()でタイムデルタ入力のサポートを追加しました。Snowpark Python関数
snowflake_cortex_summarizeの適用サポートを追加しました。DataFrame.attrsおよびSeries.attrsのサポートを追加しました。DataFrame.styleのサポートを追加しました。np.full_likeのnumpy互換性サポートを追加しました。
改善¶
行キーがスライスである場合に、
headおよびilocに対して生成される SQL クエリが改善されました。Series、DataFrame、Series.dt、およびDatetimeIndexでtz_convertとtz_localizeに不明なタイムゾーンを渡す際のエラーメッセージを改善しました。Series、DataFrame、Series.dt、およびDatetimeIndexでtz_convertとtz_localizeのドキュメントを改善し、サポートされるタイムゾーン形式を明記しました。Snowpark関数を使用する際に、
df.applyとseries.apply(さらにはmapとapplymap)のkwargsサポートをさらに追加しました。これにより、最初の引数がpandasオブジェクトでないapplyと関数の間で位置に依存しない互換性を保つことができます。行キーがスカラーの場合に
ilocおよびiatに生成される SQL クエリを改善しました。iterrowsのすべての結合を削除しました。サポートされていない機能を反映するため、
Series.mapのドキュメントを改善しました。多くのscikit-learn関数で内部的に使用される
np.may_share_memoryのサポートを追加しました。このメソッドは、Snowpark pandasオブジェクトで呼び出されると、常にfalseを返します。
バグの修正¶
入力にタイムデルタ列が含まれる場合、
DataFrameとSeriespct_change()がTypeErrorを発生させるバグを修正しました。replace()がTimedelta型をreplace()経由で正しく伝搬しないことがあったバグを修正しました。代わりに、Timedeltaに対してreplace()のNotImplementedErrorが発生します。DataFrameとSeriesround()がTimedelta列に対してAssertionErrorを発生させるバグを修正しました。代わりに、Timedeltaに対してround()のNotImplementedErrorが発生します。新しいインデックスが元のインデックスと重複しない型を持つシリーズである場合に、
reindexに失敗するバグを修正しました。DataFrameGroupBy オブジェクトに対して
__getitem__を呼び出すと、as_index=Falseの場合に常に DataFrameGroupBy オブジェクトを返すバグを修正しました。既存の列にタイムデルタ値を挿入すると、
NotImplementedErrorを発生させる代わりに値を警告なしに整数に変換してしまうバグを修正しました。axis=0とaxis=1の
DataFrame.shift()がタイムデルタ型の伝播に失敗するバグを修正しました。DataFrame.abs()、DataFrame.__neg__()、DataFrame.stack()、およびDataFrame.unstack()は、タイムデルタタイプの伝搬に失敗する代わりに、タイムデルタ入力に対してNotImplementedErrorを発生させるようになりました。
Snowparkローカルテストの更新¶
バグ修正¶
入力列名に対して
DataFrame.aliasがKeyErrorを発生させるバグを修正しました。データに空の文字列が含まれる場合に、Snowflakeステージで
to_csvが失敗するバグを修正しました。
バージョン1.23.0(2024-10-09)¶
新機能¶
snowflake.snowpark.functionsに以下の新しい関数を追加しました。make_interval
列順が TIMESTAMP または DATE 型の場合に、
Window.range_between()Snowflakeインターバル定数を使用できるようにサポートを追加しました。ファイル書き込みのサポートを追加しました。この機能は現在プライベートプレビュー中です。
QueryRecordにthread_idを追加し、クエリ履歴を送信するスレッドIDを追跡できるようにしました。Session.stored_procedure_profilerのサポートを追加しました。
バグ修正¶
ストアドプロシージャまたは UDxF を型ヒントで登録すると、関数からデフォルト値を読み込もうとしたときに「
NoneTypehas nolen()」という警告が出るバグを修正しました。
Snowpark Pandas API の更新¶
新機能¶
TimedeltaIndex.meanメソッドのサポートが追加されました。axis=0のTimedelta列をaggまたはaggregateで集計する場合の一部サポートを追加しました。pd.merge_asof向けにby、left_by、right_by、left_index、 およびright_indexのサポートを追加しました。Session.query_historyにパラメーターinclude_describeを渡すためのサポートを追加しました。DatetimeIndex.meanとDatetimeIndex.stdメソッドのサポートを追加しました。Resampler.asfreq、Resampler.indices、Resampler.nunique、 およびResampler.quantileのサポートを追加しました。closed = "left"を使用したresample頻度W、ME、YEのサポートを追加しました。pairwise = FalseとintwindowにDataFrame.rolling.corrとSeries.rolling.corrのサポートを追加しました。Rollingに文字列時間ベースのwindowとmin_periods = Noneのサポートを追加しました。DataFrameGroupBy.fillnaおよびSeriesGroupBy.fillnaのサポートを追加しました。遅延
Seriesオブジェクトを使用したDataFrameとIndexオブジェクトをdata、index、およびcolumns引数として構築するためのサポートを追加しました。DataFrame/Seriesdataに存在しないindexとcolumnの値を使用してSeriesとDataFrameオブジェクトを構築するためのサポートを追加しました。pd.read_sasのサポートを追加しました(処理にネイティブpandasを使用)。rolling().count()とexpanding().count()をTimedelta系列と列に適用するためのサポートを追加しました。pd.bdate_rangeとpd.date_rangeの両方でtzのサポートを追加しました。Series.itemsのサポートを追加しました。pd.to_datetimeでのerrors="ignore"のサポートを追加しました。DataFrame.tz_localizeおよびSeries.tz_localizeのサポートを追加しました。DataFrame.tz_convertおよびSeries.tz_convertのサポートを追加しました。SnowparkのPython関数(例:
sin)をSeries.map、Series.apply、DataFrame.apply、 およびDataFrame.applymapで適用するサポートを追加しました。
改善¶
TIMESTAMP_TZ 型の元のタイムゾーンオフセットを維持するように
to_pandasを改良しました。TIMESTAMP_TZ 型の
dtypeの結果を改善し、正しいタイムゾーンオフセットを表示するようにしました。TIMESTAMP_LTZ 型の
dtypeの結果を改善し、正しいタイムゾーンを表示するようにしました。groupby集計で
numeric_onlyにブール値以外を渡したときのエラーメッセージを改善しました。sort_valuesの並べ替えアルゴリズムに関する不要な警告を削除しました。SCOPED オブジェクトを内部で仮テーブルを作成するために使用します。SCOPED オブジェクトは、sproc内で作成された場合はsprocスコープになり、それ以外の場合はセッションスコープになり、スコープの終了時にオブジェクトは自動的にクリーニングされます。
予想外の遅さのマテリアライゼーションにつながる操作に対する警告メッセージを改善しました。
Series.applyのconvert_dtypeに関する不要な警告メッセージを削除しました。
バグ修正¶
Series/DataFrameから作成されたIndexオブジェクトが、元のSeries/DataFrameにインプレース更新が適用された後、Series/DataFrameのインデックス名が誤って更新されるバグを修正しました。Timedelta列を印刷する際に表示されることがあった無用なSettingWithCopyWarningを抑制しました。他の
Seriesオブジェクトから派生したSeriesオブジェクトのinplace引数を修正しました。系列名がインデックス列名と重なる場合、
Series.sort_valuesに失敗するバグを修正しました。データフレームをトランスポーズすると、
Timedeltaインデックスレベルが整数列レベルにマップされるバグを修正しました。タイムデルタ列の
Resamplerメソッドが整数の結果を生成するバグを修正しました。pd.to_numeric()がTimedeltaの入力を整数に変換せずにTimedeltaのままにするバグを修正しました。DataFrame の単一行または複数行にSeries値を設定する際に設定される
locを修正しました。
バージョン1.22.1(2024-09-11)¶
これは1.22.0の再リリースです。リリース内容の詳細については、1.22.0リリースノートをご参照ください。
バージョン1.22.0(2024-09-10)¶
新機能¶
snowflake.snowpark.functionsに以下の新しい関数を追加しました。array_removeln
改善¶
use_logical_typeオプションをより明示することにより、Session.write_pandasのドキュメントを改善しました。以下を
DataFrameWriter.save_as_tableに指定するサポートを追加しました。enable_schema_evolutiondata_retention_timemax_data_extension_timechange_trackingcopy_grantsiceberg_config- 以下のIceberg構成オプションを保持できる辞書。external_volumecatalogbase_locationcatalog_syncstorage_serialization_policy
以下を
DataFrameWriter.copy_into_tableに指定するサポートを追加しました。iceberg_config- 以下のIceberg構成オプションを保持できる辞書。external_volumecatalogbase_locationcatalog_syncstorage_serialization_policy
以下のパラメーターを
DataFrame.create_or_replace_dynamic_tableに指定するサポートを追加しました。moderefresh_modeinitializeclustering_keysis_transientdata_retention_timemax_data_extension_time
バグ修正¶
外部で定義されたファイルフォーマットで
PARSE_HEADER = Trueを設定する際にエラーが発生するsession.read.csvのバグを修正しました。セット操作からのクエリ生成において、子クエリが共通のサブクエリを持つ場合に重複したクエリが生成されるバグを修正しました。
データベースやスキーマを切り替えた後に存在しないステージを参照していた
session.get_session_stage内のバグを修正しました。Snowpark pandasプラグインを明示的に初期化せずに
DataFrame.to_snowpark_pandasを呼び出すとエラーが発生するバグを修正しました。動的テーブルの作成で
explode関数を使用すると、outerパラメーターのブーリアン型キャストが不適切なため、 SQL コンパイルエラーが発生するバグを修正しました。
Snowparkローカルテストの更新¶
新機能¶
UDF 呼び出しの入力として列を渡す際の型強制のサポートを追加しました。
Index.identicalのサポートを追加しました。
バグ修正¶
DataFrameWriter.save_as_tableの切り捨てモードが、 DataFrames を誤って処理して既存テーブルの列のサブセットのみを含むバグを修正しました。関数
to_timestampが、列のデータ型のデフォルトタイムゾーンを設定しないバグを修正しました。
Snowpark Pandas API の更新¶
新機能¶
以下の機能を含む、
Timedelta型の限定サポートを追加しました。Snowpark pandasは、サポートされていないTimedeltaユースケースに対してNotImplementedErrorを発生します。copy、cache_result、shift、sort_index、assign、bfill、ffill、fillna、compare、diff、drop、dropna、duplicated、empty、equals、insert、isin、isna、items、iterrows、join、len、mask、melt、merge、nlargest、nsmallest、to_pandasを介したTimedelta型の追跡をサポートします。astype経由での非タイムデルタからタイムデルタへの変換をサポートします。Timedeltaをサポートしていない残りのメソッドに対しては、NotImplementedErrorが発生します。Timedeltaを取得するために2つのタイムスタンプを減算することをサポートします。Timedeltaデータ列よるインデックスをサポートします。タイムスタンプや
Timedeltaの加算や減算をサポートします。2つの
Timedelta値間の2進演算をサポートします。2進演算と、
Timedelta間の値の比較をサポートします。遅延
TimedeltaIndexをサポートします。pd.to_timedeltaをサポートします。GroupBy集計min、max、mean、idxmax、idxmin、std、sum、median、count、any、all、size、nunique、head、tail、aggregateをサポートします。GroupByフィルター処理をfirstとlastでサポートします。TimedeltaIndex属性をdays、seconds、microseconds、およびnanosecondsでサポートします。axis=0とaxis=1のタイムスタンプ列でdiffをサポートします。ceil、floor、およびroundでTimedeltaIndexメソッドをサポートします。TimedeltaIndex.total_secondsメソッドをサポートします。
インデックスの算術演算子と比較演算子のサポートを追加しました。
Series.dt.roundのサポートを追加しました。DatetimeIndexのドキュメントページを追加しました。Index.name、Index.names、Index.rename、 およびIndex.set_namesのサポートを追加しました。Index.__repr__のサポートを追加しました。DatetimeIndex.month_nameおよびDatetimeIndex.day_nameのサポートを追加しました。Series.dt.weekday、Series.dt.time、およびDatetimeIndex.timeのサポートを追加しました。Index.minおよびIndex.maxのサポートを追加しました。pd.merge_asofのサポートを追加しました。Series.dt.normalizeおよびDatetimeIndex.normalizeのサポートを追加しました。Index.is_boolean、Index.is_integer、Index.is_floating、Index.is_numeric、およびIndex.is_objectのサポートを追加しました。DatetimeIndex.round、DatetimeIndex.floor、およびDatetimeIndex.ceilのサポートを追加しました。Series.dt.days_in_monthおよびSeries.dt.daysinmonthのサポートを追加しました。DataFrameGroupBy.value_countsおよびSeriesGroupBy.value_countsのサポートを追加しました。Series.is_monotonic_increasingおよびSeries.is_monotonic_decreasingのサポートを追加しました。Index.is_monotonic_increasingおよびIndex.is_monotonic_decreasingのサポートを追加しました。pd.crosstabのサポートを追加しました。pd.bdate_rangeのサポートを追加し、pd.date_rangeとpd.bdate_rangeの両方にビジネス頻度のサポート(B、 BME、 BMS、 BQE、 BQS、 BYE、 BYS)を含めました。DataFrame.reindexとSeries.reindex内のlabelsとして、遅延Indexオブジェクトのサポートを追加しました。Series.dt.days、Series.dt.seconds、Series.dt.microseconds、 およびSeries.dt.nanosecondsのサポートを追加しました。数値型または文字列型の
IndexからDatetimeIndexを作成できるようにサポートを追加しました。Timedeltaオブジェクトによる文字列インデックスのサポートを追加しました。Series.dt.total_secondsメソッドのサポートが追加されました。
改善¶
不要な結合を避けることにより、同じ DataFrame からの系列に対して操作が実行される場合の連結と結合のパフォーマンスが改善されました。
quoted_identifier_to_snowflake_typeをリファクタリングし、型がローカルにキャッシュされている場合にメタデータクエリを回避するようにしました。すべてのローカル入力ケースを処理できるように、
pd.to_datetimeを改善しました。クライアントにデータをプルすることなく、別の遅延インデックスから遅延インデックスを作成します。
Indexビット演算子で
NotImplementedErrorが発生するようになりました。Index.namesがnon-list-likeオブジェクトに設定された場合、より明確なエラーメッセージを表示します。MultiIndex値がローカルにプルされるごとに警告を発生します。仮テーブルの作成がトリガーされた場合、
pd.read_snowflakeの警告メッセージに作成理由が含まれるように改善しました。DataFrame.set_index、またはDataFrame.indexやSeries.indexを設定する際に、先行評価を必要とするチェックを回避することで、パフォーマンスが改善されました。その結果、現在のSeriesまたはDataFrameオブジェクトの長さに一致しない新しいインデックスが発生しても、ValueErrorは発生しなくなりました。その代わり、SeriesまたはDataFrameオブジェクトが提供されたインデックスよりも長い場合、SeriesまたはDataFrameの新しいインデックスは、「余分な」要素のためにNaN値で埋められます。それ以外の場合は、提供されたインデックスの余分な値が無視されます。
バグ修正¶
pd.Timedeltaスカラーでナノ秒の無視を中止しました。2項演算のツリーの
AssertionErrorを修正しました。名前付き系列を使用した
Series.dt.isocalendar内のバグを修正しました。DataFrame 列から派生したSeriesオブジェクトの
inplace引数を修正しました。Series.reindexとDataFrame.reindexが、結果インデックスの名前を正しく更新しないバグを修正しました。axis=1の指定時にSeries.takeがエラーを発生しなかったバグを修正しました。
バージョン1.21.1(2024-09-05)¶
バグ修正¶
非同期ジョブで
to_pandas_batchesを使用すると、非同期クエリ完了待ちの処理が不適切なためにエラーが発生するバグを修正しました。
バージョン1.21.0(2024-08-19)¶
新機能¶
snowflake.snowpark.testing.assert_dataframe_equalのサポートを追加しました。これは2つのSnowpark DataFrames の等質性をチェックするユーティリティ関数です。
改善¶
サーバー側の文字列サイズ制限のサポートを追加しました。
ストアドプロシージャ、 UDFs、 UDTFs をオプション引数付きで作成および呼び出しできるようにサポートを追加しました。
DataFrame.lineage.traceAPI に列系統のサポートを追加しました。INFER_SCHEMA_OPTIONS経由でDataFrameReaderにINFER_SCHEMAオプションを渡せるようにサポートを追加しました。Column.rlikeとColumn.regexpにparametersパラメーターを渡せるようにサポートを追加しました。DataFrame が参照されなくなった(つまり、ガベージコレクションになった)ときに、現在のセッションで
df.cache_result()によって作成された仮テーブルを自動的にクリーンアップするサポートを追加しました。これはまだ実験的な機能で、デフォルトでは有効になっていません。session.auto_clean_up_temp_table_enabledをTrueに設定すると有効になります。snowflake.snowpark.functions.to_dateのfmtパラメーターに文字列リテラルのサポートを追加しました。
バグ修正¶
*列を選択するために生成される SQL のサブクエリが正しくないバグを修正しました。DataFrame.to_pandas_batchesで、pandas DataFrame に対して特定の変換が行われた場合に、間違った分離レベルのために反復子がエラーをスローすることがあるバグを修正しました。DataFrame.lineage.traceのバグを修正し、引用機能ビューの名前とバージョンを正しく分割できるようにしました。Column.isinで、空のリストを渡された場合に SQL の生成が不正になるバグを修正しました。list-like項目を持つセルを設定する際に、
NotImplementedErrorが発生しないバグを修正しました。
Snowparkローカルテストの更新¶
新機能¶
以下の APIs のサポートを追加しました。
snowflake.snowpark.functionsrankdense_rankpercent_rankcume_distntiledatediffarray_agg
snowflake.snowpark.column.Column.within_group
モックプランの正規表現ステートメントにおけるフラグ解析のサポートを追加しました。これにより、上記の
rlikeとregexpの変更でパリティを維持します。
バグ修正¶
ウィンドウ関数
LEADとLAGがオプションignore_nullsを適切に処理しないバグを修正しました。テーブルマージ操作の挿入中に、値が結果 DataFrame に入力されないバグを修正しました。
改善¶
整数インデックスに関するpandas
FutureWarningを修正しました。
Snowpark Pandas API の更新¶
新機能¶
DataFrame.backfill、DataFrame.bfill、Series.backfill、 およびSeries.bfillのサポートを追加しました。DataFrame.compareとSeries.compareのデフォルトパラメーターのサポートを追加しました。Series.dt.microsecondおよびSeries.dt.nanosecondのサポートを追加しました。Index.is_uniqueおよびIndex.has_duplicatesのサポートを追加しました。Index.equalsのサポートを追加しました。Index.value_countsのサポートを追加しました。Series.dt.day_nameおよびSeries.dt.month_nameのサポートを追加しました。Indexでのインデックス、たとえば
df.index[:10]のサポートを追加しました。DataFrame.unstackおよびSeries.unstackのサポートを追加しました。DataFrame.asfreqおよびSeries.asfreqのサポートを追加しました。Series.dt.is_month_startおよびSeries.dt.is_month_endのサポートを追加しました。Index.allおよびIndex.anyのサポートを追加しました。Series.dt.is_year_startおよびSeries.dt.is_year_endのサポートを追加しました。Series.dt.is_quarter_startおよびSeries.dt.is_quarter_endのサポートを追加しました。遅延
DatetimeIndexのサポートを追加しました。Series.argmaxおよびSeries.argminのサポートを追加しました。Series.dt.is_leap_yearのサポートを追加しました。DataFrame.itemsのサポートを追加しました。Series.dt.floorおよびSeries.dt.ceilのサポートを追加しました。Index.reindexのサポートを追加しました。DatetimeIndexプロパティにyear、month、day、hour、minute、second、microsecond、nanosecond、date、dayofyear、day_of_year、dayofweek、day_of_week、weekday、quarter、is_month_start、is_month_end、is_quarter_start、is_quarter_end、is_year_start、is_year_end、およびis_leap_yearのサポートを追加しました。Resampler.fillnaおよびResampler.bfillのサポートを追加しました。Timedelta列やto_pandasの作成など、Timedelta型の限定サポートを追加しました。Index.argmaxおよびIndex.argminのサポートを追加しました。
改善¶
Snowpark pandasをインポートする際の公開プレビューの警告メッセージを削除しました。
SnowflakeQueryCompiler.is_series_likeメソッドから不要なカウントクエリを削除しました。Dataframe.columnsは、Snowpark Indexオブジェクトではなく、ネイティブのpandas Indexオブジェクトを返すようになりました。クエリコンパイラから
Indexを作成するために、リファクタリングしてIndexコンストラクターにquery_compiler引数を導入しました。pd.to_datetimeは、Seriesオブジェクトの代わりにDatetimeIndexオブジェクトを返すようになりました。pd.date_rangeは、Seriesオブジェクトの代わりにDatetimeIndexオブジェクトを返すようになりました。
バグ修正¶
サポートされていない集計関数を
pivot_tableに渡すと、KeyErrorではなくNotImplementedErrorが発生するようにしました。サポートされていない集計に関するエラーメッセージとテレメトリから、軸ラベルと呼び出し可能な名前を削除しました。
sort_valuesの後に呼び出されたSeries.drop_duplicatesとDataFrame.drop_duplicatesにあるAssertionErrorを修正しました。名前が指定されていない場合に結果フレームの列名が間違っている場合がある
Index.to_frame内のバグを修正しました。一部のIndex docstringsが無視されるバグを修正しました。
結果名が間違っている場合がある
Series.reset_index(drop=True)内のバグを修正しました。基になるウィンドウ式内の正しい列による
Groupby.first/last順序付けで発生するバグを修正しました。
バージョン1.20.0(2024-07-17)¶
Snowpark Library for Pythonのバージョン1.20.0では、いくつかの新機能が導入されています。
新機能¶
DataFrame内のテーブルストアドプロシージャ関数に、オープンテレメトリ APIs を使用した分散トレースを追加しました。_execute_and_get_query_id
arrays_zip関数のサポートを追加しました。数値に対する不要なキャストを回避することにより、バイナリ列式と
df._inのパフォーマンスが向上しました。この最適化を有効にするには、session.eliminate_numeric_sql_value_cast_enabled = Trueを設定します。ターゲットテーブルが存在せず、
auto_create_table=Falseの場合に発生する、write_pandasのエラーメッセージを改善しました。Snowparkの UDxF 関数にオープンテレメトリトレースを追加しました。
Snowparkのストアドプロシージャ登録にオープンテレメトリトレースを追加しました。
Session.query_tagのアプリ名を JSON 形式で設定するSession.SessionBuilder.app_name関数に、format_jsonと呼ばれる新しいオプションパラメーターを追加しました。デフォルトでは、このパラメーターはFalseに設定されています。
バグ修正¶
lag(x, 0)に対して生成された SQL が不正で、エラーメッセージargument 1 to function LAG needs to be constant, found 'SYSTEM$NULL_TO_FIXED(null)'が表示されて失敗するバグを修正しました。
Snowparkローカルテストの更新¶
新機能¶
以下の APIs のサポートを追加しました。
snowflake.snowpark.functionsrandom
モック関数を登録する際に、
patch関数に新しいパラメーターを追加しました。distinctにより、 SQL 関数を区別する必要がある場合に、代替関数を指定することができます。pass_column_indexは、入力データのために、pandas.Indexを含むモック関数に名前付きパラメーターcolumn_indexを渡します。pass_row_indexは、現在関数が操作している0インデックスの行番号であるモック関数に、名前付きパラメーターrow_indexを渡します。pass_input_dataは、現在の式のために、入力データフレーム全体を含むモック関数に、名前付きパラメーターinput_dataを渡します。DataFrameWriter.save_as_tableメソッドにあるcolumn_orderパラメーターのサポートを追加しました。
バグ修正¶
DecimalTypeの列をBinaryExpressionsで使用した場合、誤って整数精度に切り捨てられるバグを修正しました。
Snowpark pandas API の更新¶
新機能¶
以下の新しい API サポートを追加しました。
DataFrames
DataFrame.nlargestおよびDataFrame.nsmallestDataFrame.assignDataFrame.stackDataFrame.pivotDataFrame.to_csvDataFrame.corrDataFrame.corrDataFrame.equalsDataFrame.reindexDataFrame.atおよびDataFrame.iat
Series
Series.nlargestおよびSeries.nsmallestSeries.atおよびSeries.iatSeries.dt.isocalendarSeries.equalsSeries.reindexSeries.to_csvSeries.case_when。ただし、条件または置換が呼び出し可能な場合を除く。マテリアライズしたデータのある
series.plot()をローカルクライアントに
GroupBy
DataFrameGroupBy.allおよびDataFrameGroupBy.anyDataFrameGroupByおよびSeriesGroupBy集合firstおよびlastDataFrameGroupBy.get_groupSeriesGroupBy.allおよびSeriesGroupBy.any
一般
pd.pivotread_excel(処理にローカルpandasを使用)マテリアライズしたデータのある
df.plot()をローカルクライアントに
既存の APIs を以下のように拡張しました。
DataFrame.sampleとSeries.sampleでreplaceとfrac > 1のサポートを追加しました。table内の値がシングルコードポイント文字列であるSeries.str.translateの部分的サポートを追加しました。methodパラメーターがfillnaで使用される場合のlimitパラメーターのサポートを追加しました。
Indexとその APIs のドキュメントページを追加しました。
バグ修正¶
スカラー
otherがリテラル0の場合に、np.whereとdf.whereを使用する際の問題を修正しました。Snowpark pandas
DataFrameまたはSeriesをdtype=np.uint64で変換する際の精度損失に関するバグを修正しました。pivot_tableの際、indexとcolumnsに DataFrame 内のすべての列が含まれる場合、valuesがindexに設定されるバグを修正しました。
改善¶
Index.copy()のサポートを追加しました。Index APIs に
dtype、values、item()、tolist()、to_series()、およびto_frame()のサポートを追加しました。pd.pivot_tableとDataFrame.pivot_tableで、行がない DataFrames のサポートを拡大しました。DataFrame.sort_indexとSeries.sort_indexでinplaceパラメーターのサポートが追加されました。
バージョン1.19.0(2024-06-25)¶
Snowpark Library for Pythonのバージョン1.19.0では、いくつかの新機能が導入されています。
新機能¶
to_boolean関数のサポートを追加しました。Indexとその APIs のドキュメントページを追加しました。
バグ修正¶
テーブルのあるPythonストアドプロシージャをタスクで実行すると、戻り型が失敗するバグを修正しました。
DataFrame が500列を超える場合に、
RecursionError: maximum recursion depth exceededでdf.dropnaが失敗するバグを修正しました。クエリの実行が終了するまで
AsyncJob.result("no_result")が待機しないバグを修正しました。
ローカルテストの更新¶
新機能¶
UDFs およびストアドプロシージャを登録する場合の
strictパラメーターのサポートを追加しました。
バグ修正¶
convert_timezoneで、source_timezoneパラメーターの設定がエラーを返すバグを修正しました。DateType型の空のデータで DataFrame を作成するとAttributeErrorが発生するバグを修正しました。更新句があっても更新されない場合、テーブルマージに失敗するバグを修正しました。
to_charのモック実装において、着信列が連続しない行インデックスを持つ場合にIndexErrorが発生するバグを修正しました。着信列が連続しない行インデックスを持つ場合に
IndexErrorが発生するCaseExpr式の処理でバグを修正しました。Column.likeの実装において、着信列が連続しない行インデックスを持つ場合にIndexErrorが発生するバグを修正しました。
改善¶
DataFrame.replace、DataFrame.dropna、およびモック関数iffの実装に、型強制のサポートを追加しました。
Snowpark Pandas API の更新¶
新機能¶
freqとlimitパラメーターのないDataFrame.pct_changeとSeries.pct_changeの部分的サポートを追加しました。Series.str.getのサポートを追加しました。Series.dt.dayofweek、Series.dt.day_of_week、Series.dt.dayofyear、およびSeries.dt.day_of_yearのサポートを追加しました。Series.str.__getitem__ (Series.str[...])のサポートを追加しました。Series.str.lstripとSeries.str.rstripのサポートを追加しました。DataFrameGroupby.sizeとSeriesGroupby.sizeのサポートを追加しました。axis=0のある集計count、sum、min、max、mean、std、およびvarにDataFrame.expandingとSeries.expandingのサポートを追加しました。axis=0のある集計カウントにDataFrame.rollingとSeries.rollingのサポートを追加しました。Series.str.matchのサポートを追加しました。集計サイズに
DataFrame.resampleとSeries.resampleのサポートを追加しました。
バグ修正¶
GroupBy.aggregate列の出力順序が正しくないバグを修正しました。異なる
dtypesの列が重複しているフレームでDataFrame.describeを呼び出すと、エラーや不正な結果が発生するバグを修正しました。DataFrame.rollingとSeries.rollingのバグを修正して、window=0が、ValueErrorの代わりにNotImplementedErrorをスローするようにしました。
改善¶
axis=0のあるDataFrame.aggregateとSeries.aggregateに名前付き集計のサポートを追加しました。pd.read_csvは、ネイティブpandas CSV パーサーを使用して読み込み、parquetを使用してSnowflakeにデータをアップロードします。これにより、read_csvでサポートされている日付パースや数値変換など、ほとんどのパラメーターを有効にすることができます。Parquet経由のアップロードは、 CSV 経由のアップロードのおよそ2倍の速さです。pd.IndexをSnowpark pandasで直接サポートするための初期作業。pd.IndexをSnowpark pandasのファーストクラスコンポーネントとしてサポートするため、現在積極的に開発中です。遅延インデックスのコンストラクターを追加し、
len、shape、size、empty、to_pandas()、およびnamesのサポートを追加しました。df.indexの場合、Snowpark pandasは遅延インデックスオブジェクトを作成します。df.columnsの場合、Snowpark pandasでは、データがすでにローカルに保存されているため、Indexの非遅延バージョンをサポートします。
バージョン1.18.0(2024-05-28)¶
Snowparkライブラリのバージョン1.18.0では、いくつかの新機能が導入されています。
新機能¶
セッションの間、仮テーブルに
DataFrameおよびSeriesオブジェクトを保存するために、DataFrame.cache_resultおよびSeries.cache_resultメソッドをユーザー向けに追加して、後続の操作の遅延時間を改善しました。
改善¶
indexパラメーターなしとmarginsパラメーターありのDataFrame.pivot_tableに対するサポートを追加しました。DataFrame.shift、Series.shift、DataFrameGroupBy.shift、SeriesGroupBy.shiftの署名をpandas 2.2.1に一致するよう更新しました。Snowpark pandasでは、新しく追加されたサフィックス引数やピリオドのシーケンス値はまだサポートされていません。Series.str.splitのサポートを再追加しました。
バグ修正¶
文字列メソッド(
Series.str.*)列が混在していた問題を修正しました。
ローカルテストの更新¶
新機能¶
ファイル形式 CSV および JSON に、以下の
DataFrameReader読み取りオプションのサポートを追加しました。PURGE
PATTERN
False値のある INFER_SCHEMAUTF8値のある ENCODING
DataFrame.analytics.moving_aggおよびDataFrame.analytics.cumulative_agg_aggのサポートを追加しました。UDF およびストアドプロシージャ登録時の
if_not_existsパラメーターのサポートを追加しました。
バグ修正¶
時間形式の処理において、秒の端数部分が正しく処理されないバグを修正しました。
*での関数呼び出しに失敗するバグを修正しました。mapおよびstruct型のオブジェクトを作成できないバグを修正しました。関数
date_addが一部の数値型を処理できないバグを修正しました。TimestampTypeのキャストが不正なデータになるバグを修正しました。DecimalTypeデータが不正な精度を持つ場合があるバグを修正しました。欠落したテーブルやビューを参照すると
IndexErrorが発生するバグを修正しました。モック関数
to_timestamp_ntzがNoneデータを処理できないバグを修正しました。モックされた UDFs が
Noneの出力データを不適切に扱うバグを修正しました。DataFrame.with_column_renamedが結合操作後に親DataFramesからの属性を無視するバグを修正しました。pandas
DataFrameに変換する際に、大きな値の整数精度が失われるバグを修正しました。pandas
DataFrameからDataFrameを作成する際、datetimeオブジェクトのスキーマが間違っていたバグを修正しました。Column.equal_nanの実装において、nullデータが正しく処理されていなかったバグを修正しました。DataFrame.dropが結合操作後に親DataFramesからの属性を無視するバグを修正しました。モック関数
date_partで列の型が正しく設定されないバグを修正しました。DataFrameWriter.save_as_tableでnull非許容型の列にnullデータを挿入した場合に例外が発生しない不具合を修正しました。DataFrameWriter.save_as_tableの実装における以下のバグを修正しました。受信データが既存のテーブルと異なるスキーマを持つ場合、追加または切り捨てが失敗する。
受信データにnull許容型の列が指定されていない場合、切り捨てが失敗する。
改善¶
使用されていない
pyarrowの依存関係チェックを削除しました。Column.castのターゲット型範囲が改善され、ブール値型とすべての整数型へのキャストのサポートが追加されました。UDFs およびストアドプロシージャを呼び出す際のエラーエクスペリエンスを調整しました。
UDFs およびストアドプロシージャ登録の
is_permanentおよびanonymousオプションに適切なエラーメッセージを追加し、これらの機能がまだサポートされていないことを明確にしました。サポートされていないオプションや値を使用したファイル読み取り操作で、警告や不明確なエラー情報の代わりに
NotImplementedErrorが発生するようになりました。
バージョン1.17.0(2024-05-21)¶
Snowparkライブラリのバージョン1.17.0では、いくつかの新機能が導入されています。
新機能¶
以下の関数を使用して、テーブルとビューにコメントを追加できるようになりました。
DataFrameWriter.save_as_tableDataFrame.create_or_replace_viewDataFrame.create_or_replace_temp_viewDataFrame.create_or_replace_dynamic_table
改善¶
スキーマを指定せずに CSV ファイルを読み込む際に、
{"infer_schema": True}を設定するようユーザーに促すエラーメッセージを改善しました。
ローカルテストの更新¶
新機能¶
モック関数
to_timestamp_ltz、to_timestamp_ntz、to_timestamp_tz、to_timestampでNumericTypeおよびVariantTypeのデータ変換のサポートを追加しました。モック関数
to_charでDecimalType、BinaryType、ArrayType、MapType、TimestampType、DateType、TimeTypeのデータ変換のサポートを追加しました。以下の APIs のサポートを追加しました。
snowflake.snowpark.functions.to_varcharsnowflake.snowpark.DataFrame.pivotsnowflake.snowpark.Session.cancel_all
新しい例外クラス
snowflake.snowpark.mock.exceptions.SnowparkLocalTestingExceptionを導入しました。FloatTypeへのキャストのサポートを追加しました。
バグ修正¶
ストアドプロシージャと UDFs が、クリーンアップステップ中に
sys.pathの既存のインポートを削除すべきではないのに削除してしまうバグを修正しました。datetime形式を処理する際、秒の端数部分が正しく処理されないバグを修正しました。Windowsプラットフォーム上のファイル操作で、ディレクトリ名に含まれるファイル区切り文字を適切に処理できないバグを修正しました。
Windowsプラットフォームで、pandasデータフレームを読み込む際に、整数データを持つ
IntervalType列を処理できないバグを修正しました。同じエイリアスを持つ複数の列を選択できないバグを修正しました。
識別子が引用符で囲まれている場合に、
Session.get_current_[schema |database| role |user| account|warehouse]が大文字の識別子を返すバグを修正しました。関数
substrおよびsubstringがゼロベースのstart_exprを処理できないバグを修正しました。
改善¶
エラー時に
SnowparkLocalTestingExceptionを発生させることで、非ローカル実行時に発生するSnowparkSQLExceptionと同等のエラーエクスペリエンスを標準化しました。Session.write_pandasメソッドのエラーエクスペリエンスを改善し、NotImplementErrorが呼び出されたときに発生するようにしました。非ローカル実行でクローズされたセッションを再利用する際のエラーエクスペリエンスを調整しました。
バージョン1.16.0(2024-05-08)¶
Snowparkライブラリのバージョン1.16.0では、いくつかの新機能が導入されています。
新機能¶
Snowflakeオブジェクトのデータ系統を探索するための
snowflake.snowpark.Session.lineage.traceを追加しました。Pythonモジュールとして指定されたパッケージにストアドプロシージャを登録するサポートを追加しました。
構造化型スキーマ解析のサポートを追加しました。
バグ修正¶
スキーマを推論する際、すでに一重引用符で囲まれているステージファイル一重引用符が追加されるバグを修正しました。
ローカルテストの更新¶
新機能¶
モック関数
to_dateでStringType、TimestampType、VariantTypeのデータ変換のサポートを追加しました。以下の APIs のサポートを追加しました。
snowflake.snowpark.functions:getconcatconcat_ws
バグ修正¶
NaTおよびNaNの値が認識されない原因となっていたバグを修正しました。スキーマを推論する際、すでに一重引用符で囲まれているステージファイル一重引用符が追加されるバグを修正しました。
DataFrameReader.csvで区切り文字を含む引用符付きの値を処理できないバグを修正しました。算術計算に
Noneの値がある場合、出力がmath.nanではなくNoneのままになるべきなのにそうならないバグを修正しました。関数
sumおよびcovar_popで、データにmath.nan値がある場合、出力もmath.nanになるべきなのにそうならないバグを修正しました。ステージ操作でディレクトリを処理できないバグを修正しました。
DataFrame.to_pandasが精度38のSnowflake数値型をint64として受け取るべきなのにそうならないバグを修正しました。
バージョン1.15.0(2024-04-24)¶
Snowparkライブラリのバージョン1.15.0では、いくつかの新機能が導入されています。
新機能¶
DataFrameWriteにtruncate保存モードが追加され、既存のテーブルをドロップする代わりに、基になるテーブルを切り捨てて上書きするようになりました。収集操作中のクエリプランの高さと重複ノード数を計算するためのテレメトリーを追加しました。
DataFrameからステージにおける1つまたは複数のファイルにデータをアンロードするために以下の関数を追加しました。DataFrame.write.jsonDataFrame.write.csvDataFrame.write.parquet
DataFrameおよびDataFrameWriterのアクション関数に、オープンテレメトリー APIs を使用した分散トレースを追加しました。snowflake.snowpark.DataFrame:collectcollect_nowaitto_pandascountshow
snowflake.snowpark.DataFrameWriter:save_as_table
snow://URLs、snowflake.snowpark.Session.file.get、およびsnowflake.snowpark.Session.file.get_streamのサポートが追加されました。ストアドプロシージャと UDFs を
commentで登録するサポートを追加しました。UDAF クライアントサポートの公開プレビューの準備が整いました。Snowflakeからの UDAF 公開プレビューの発表にご期待ください。
動的ピボットのサポートを追加しました。この機能は現在プライベートプレビュー中です。
改善¶
重複するサブクエリを共通テーブル式(CTEs)に変換することで、コンパイルと実行の両方で生成クエリのパフォーマンスが向上しました。これはまだ実験的な機能で、デフォルトでは有効になっていません。
session.cte_optimization_enabledをTrueに設定すると有効になります。
バグ修正¶
ストアドプロシージャおよびユーザ定義関数を登録するクエリ実行に
statement_paramsが渡されないバグを修正しました。引用されたステージの場所で
snowflake.snowpark.Session.file.get_streamが失敗するバグを修正しました。基になるモジュールが見つからない場合に、
utils.pyの内部型ヒントがAttributeErrorを発生させることがあるバグを修正しました。
ローカルテストの更新¶
新機能¶
UDFs およびストアドプロシージャの登録のサポートを追加しました。
以下の APIs のサポートを追加しました。
snowflake.snowpark.Session:file.putfile.put_streamfile.getfile.get_streamread.jsonadd_importremove_importget_importsclear_importsadd_packagesadd_requirementsclear_packagesremove_packageudf.registerudf.register_from_filesproc.registersproc.register_from_file
snowflake.snowpark.functionscurrent_databasecurrent_sessiondate_truncobject_constructobject_construct_keep_nullpowsqrtudfsproc
モック関数
to_timeでStringType、TimestampType、VariantTypeのデータ変換のサポートを追加しました。
バグ修正¶
定数関数の列がnull充填されるバグを修正しました。
to_object、to_array、to_binaryのnull入力をより適切に処理できるように修正しました。タイムスタンプデータの比較で、2262年以降を処理できないバグを修正しました。
Session.builder.getOrCreateが作成されたモックセッションを返すべきなのにそうならないバグを修正しました。
バージョン1.14.0(2024-03-20)¶
Snowparkライブラリのバージョン1.14.0では、いくつかの新機能が導入されています。
新機能¶
processメソッドでベクトル化された UDTFs の作成のサポートを追加しました。以下のデータフレーム関数のサポートを追加しました。
to_timestamp_ltzto_timestamp_ntzto_timestamp_tzlocate
ASOFJOIN 型のサポートが追加されました。
以下のローカルテスト APIs のサポートを追加しました。
snowflake.snowpark.functions:
to_doubleto_timestampto_timestamp_ltzto_timestamp_ntzto_timestamp_tzgreatestleastconvert_timezonedateadddate_part
snowflake.snowpark.Session:
get_current_accountget_current_warehouseget_current_roleuse_schemause_warehouseuse_databaseuse_role
改善¶
ローカルテストにテレメトリーを追加しました。
DataFrameReaderのエラーメッセージを改善し、存在しないパスを読み込んだ場合や、パス下にファイルがない場合にFileNotFoundエラーを発生するようにしました。
バグ修正¶
SnowflakePlanBuilderで、名前が$で始まり、その後に数字が続く列をsave_as_tableが正しくフィルタリングしないバグを修正しました。インポートおよびパッケージの解決時にステートメントパラメーターが効果を発揮しない場合があるバグを修正しました。
以下のローカルテストでのバグを修正しました。
LEFT ANTI および LEFT SEMI 結合がnull値を持つ行をドロップする。
オプションのパラメーター
field_optionally_enclosed_byが指定された場合、DataFrameReader.csvで正しくデータが解析されない。Column.regexpは、patternがColumnの場合、最初のエントリのみを考慮する。Table.updateで、行のnull値を更新する際にKeyErrorが発生する。VARIANT 列で
DataFrame.collect時にエラーが発生する。count_distinctがカウント時に正しく動作しない。整数列のnull値で
TypeErrorが発生する。
バージョン1.13.0(2024-02-26)¶
Snowparkライブラリのバージョン1.13.0では、いくつかの新機能が導入されています。
新機能¶
関数
last_dayのオプション引数date_partのサポートを追加しました。SessionBuilder.app_nameは、セッション作成後にquery_tagを設定します。以下のローカルテスト関数のサポートを追加しました。
current_timestampcurrent_datecurrent_timestrip_null_valueupperlowerlengthinitcap
改善¶
インタプリターのシャットダウン時に、すべてのアクティブなセッションをクローズするクリーンアップロジックを追加しました。
バグ修正¶
誤った分離レベルが原因で、反復子が終了する前に別のクエリが実行されるときに反復子が間違った結果を返す、
DataFrame.to_local_iteratorのバグを修正しました。ローカルテストを有効にしてプランを実行すると、エラーメッセージのテーブル名が切り捨てられるバグを修正しました。
範囲が大きい場合に
Session.rangeが空の結果を返すバグを修正しました。
バージョン1.12.1(2024-02-08)¶
Snowparkライブラリのバージョン1.12.1では、いくつかの新機能が導入されています。
改善¶
最適なメモリ割り当てのために、
to_pandas変換時にデフォルトでsplit_blocks=Trueを使用します。このパラメーターはpyarrow.Table.to_pandasに渡され、PyArrowがメモリ割り当てを分割して、単一の連続したブロックではなく、小さく管理しやすいブロックに割り当てられるようにします。この結果、大きなデータセットを扱う際のメモリ管理が改善されます。
バグ修正¶
Null値を持つ
IntegerType列を持つDataframe上で評価するとエラーが発生するDataFrame.to_pandasのバグを修正しました。
バージョン1.12.0(2024-01-29)¶
Snowparkライブラリのバージョン1.12.0では、いくつかの新機能が導入されています。
動作変更(API 互換)¶
to_pandas操作中にデータ型を解析するときは、大きな整数値の精度問題を修正するために GS 精度値に依存します。これは、以前にint8として返されていた列がint64として返されるユーザーに、影響を与える可能性があります。ユーザーは、戻り値の列に明示的に精度値を指定することで、この問題を解決することができます。Session.callを実行すると、collect()操作が実行される場合を除いて、ストアドプロシージャがトリガーされなかったテーブルストアドプロシージャの場合に、Session.callの動作を揃えました。StoredProcedureRegistrationは、クライアントのローカルバージョンのライブラリにおける依存パッケージとしてsnowflake-snowpark-pythonを自動的に追加するようになりました。サーバーがそのバージョンをサポートできない場合は、エラーがスローされます。
新機能¶
StoredProcedure.__call__でstatement_paramsを公開しました。Session.add_importに2つのオプション引数を追加しました。chunk_size: アップロードされたファイルの各チャンクをハッシュするバイト数。whole_file_hash: デフォルトでは、アップロードされたインポートの最初のチャンクのみが、時間を節約するためにハッシュ化されます。Trueに設定すると、アップロードされた各ファイルが完全にハッシュ化されます。
Snowpark Pythonから UDAF を作成する際のパラメーター、
external_access_integrationsとsecretsを追加し、外部アクセスと統合できるようにしました。新しいメソッド
Session.append_query_tagを追加しました。これにより、コンマ区切りの値としてタグを追加すると、現在のクエリタグにさらにタグを追加することができるようになります。新しいメソッド
Session.update_query_tagを追加しました。これにより、 JSON エンコードされたディクショナリクエリタグを更新できるようになります。SessionBuilder.getOrCreateは、トークンの有効期限が検出されたときに返すシングルトンの置換を試行するようになりました。snowflake.snowpark.functionsに以下の関数を追加しました。array_exceptcreate_mapsign/signum
DataFrame.analyticsに以下の関数を追加しました。複数のウィンドウサイズでの合計や平均のような移動集計を可能にするために、
moving_agg関数をDataFrame.analyticsに追加しました。複数のウィンドウサイズでの合計や平均のような移動集計を可能にするために、
cumulative_agg関数をDataFrame.analyticsに追加しました。
バグ修正¶
ブール値が誤って整数値を上書きする
DataFrame.na.fillのバグを修正しました。Session.create_dataframeで、pandas DataFrames を使用して作成されたSnowpark DataFrames がタイムスタンプ列の型を正しく推測していなかったバグを修正しました。動作は以下のとおりです。タイムゾーンのない以前のタイムスタンプ列は、ナノ秒エポックに変換され
LongType()と推論されていましたが、現在はタイムスタンプ値として正しく保持され、TimestampType(TimestampTimeZone.NTZ)と推論されるようになりました。タイムゾーンのある以前のタイムスタンプ列は、
TimestampType(TimestampTimeZone.NTZ)として推測され、タイムゾーン情報が失われていましたが、現在はTimestampType(TimestampTimeZone.LTZ)として正しく推測され、タイムゾーン情報は正しく保持されるようになりました。セッションパラメーター
PYTHON_SNOWPARK_USE_LOGICAL_TYPE_FOR_CREATE_DATAFRAMEを設定して、以前の動作に戻します。このパラメーターは将来削除される予定であるため、Snowflakeは、正しい動作になるようにコードを更新することを推奨しています。
スケールが0でない場合に
DataFrame.to_pandasが10進数型を取得し、pandasにオブジェクトのd型を作成するバグを修正しました。代わりに、値をfloat64型にキャストします。以下のいずれかが発生した場合に生成された SQL が誤ってフラット化されるバグを修正しました。
DataFrame.filter()はDataFrame.sort().limit()の後に呼び出されます。DataFrame.sort()またはfilter()は、ウィンドウ関数またはシーケンス依存データ生成列がすでにある DataFrame で呼び出されます。たとえば、df.select("a", seq1().alias("b")).select("a", "b").sort("a")は、ソート句をフラット化しなくなります。ウィンドウまたはシーケンス依存のデータ生成列が
DataFrame.limit()の後に使用されます。たとえば、df.limit(10).select(row_number().over())はリミットをフラット化せず、生成された SQL で選択するようになります。
エイリアシングされた列のある別の DataFrame から DataFrame がコピーされている場合に DataFrame 列をエイリアシングすると、エラーが発生するバグを修正しました。たとえば、
df = df.select(col("a").alias("b")) df = copy(df) df.select(col("b").alias("c")) # Threw an error. Now it's fixed.
Session.create_dataframeで、スキーマにある非null許容フィールドがブール値型で尊重されないバグを修正しました。この修正は、ユーザーが仮テーブルを作成する権限を持っている場合にのみ有効であることに注意してください。limit()を使用した場合に、session.sqlにある非選択ステートメントが SQL クエリがドロップされる SQL シンプリファイアーでのバグを修正しました。セッションパラメーター
ERROR_ON_NONDETERMINISTIC_UPDATEがtrueの場合に例外が発生するバグを修正しました。