2023年8月にリリースされたSnowflakeの新機能・変更点の個人的な注目情報まとめ #SnowflakeDB

2023.09.06

さがらです。

2023年8月にリリースされたSnowflakeの新機能・変更点の個人的な注目情報をまとめた記事となります。

※注意事項:本記事ではすべての情報についての記述はせず、特筆すべきだと感じた情報だけピックしております。基本的には以下の情報を参考にしておりますので、全ての最新情報を確認したい場合は下記のURLからご確認ください。

7.30 Release Notes - August 28-29, 2023

データパイプラインに関わるオブジェクト(Stage、Storage Integration、Pipe、Load History)がレプリケーション ※パブリックプレビュー

これまでのSnowflakeではデータパイプラインに関わるオブジェクト(Stage、Storage Integration、Pipe、Load History)はレプリケーションできなかったのですが、今回のアップデートでレプリケーションが出来るようになりました!

このアップデートのお陰で、Business Critical以上で使用できるアカウントレプリケーションとフェールオーバーを行えば、よりスムーズに別アカウントへの切り替えができるようになります。

データパイプラインに関わるオブジェクトのレプリケーションについては、下記の公式Docも併せてご覧ください。

外部テーブルのVirtual Columnに対するマスキングポリシーの設定が出来るように ※パブリックプレビュー

外部テーブルのVirtual Columnに対するマスキングポリシーの設定が出来るようになりました。

具体的には、下記のようなクエリで外部テーブルのVALUE列にマスキング ポリシーを割り当てることができるようになりました。VALUE列を保護するマスキング ポリシーのデータ型はVARIANTである必要があるため、この点だけ注意が必要ですね。

ALTER TABLE t1 MODIFY COLUMN VALUE SET MASKING POLICY p1;

より詳細は下記の公式Docをご覧ください。

Snowpark、UDF、UDTF、ストアドプロシージャでの Python 3.9 および 3.10 のサポート ※一般提供

Snowpark、UDF、UDTF、ストアドプロシージャでのPython 3.9 および 3.10 のサポートが一般提供となりました!

要望が多かったアップデートだと思うので、ぜひ試して頂きたいです。

Pythonのストアドプロシージャの戻り値として表形式を設定できるように ※一般提供

Pythonのストアドプロシージャの戻り値として表形式を設定できる機能が一般提供となりました!

これで、Pythonで記述したストアドプロシージャの戻り値をテーブルとして保持できるようになったので、Snowpark Pythonの汎用性が一層高まったと思います。

7.29 Release Notes - August 22-23, 2023

クエリの構造を理解しパフォーマンス上の問題を引き起こしている演算子を特定できるGET_QUERY_OPERATOR_STATS関数がリリース ※一般提供

GET_QUERY_OPERATOR_STATS関数という新しいテーブル関数がリリースされました。

下記の公式Docのサンプルを見る限り、クエリの流れを各オペレータごとに分解して表形式で表し、どのオペレータでどれだけのレコードが処理されたか、というのを分析することが出来そうです。

Query Hashを用いたクエリのトレンドパターンを解析する機能がリリース ※一般提供だが2023_06バンドルの有効化が必須

Query Hashを用いたクエリのトレンドパターンを解析する機能がリリースされました。

2023_06バンドルの有効化が必要となりますが、QUERY_HISTORYなどのビューにquery_hash列とquery_parameterized_hash列が追加され、類似したクエリパターンを解析できるようです。

公式Docからの引用ですが、下記の2つのクエリはWHERE句で指定している値が異なるだけのため、query_parameterized_hash列の値が同じになるようです。実際にありえそうな例としては、BIツールのダッシュボード上で条件だけを切り替えている場合には、query_parameterized_hash列の値の値が同じになりそうですね!

SELECT * FROM table1 WHERE table1.name = 'TIM'

SELECT * FROM table1 WHERE table1.name = 'AIHUA'

より詳細については、下記の公式Docをご覧ください。

7.28 Release Notes - August 16-17, 2023

Pythonパッケージのバージョン範囲のサポート ※プレビュー

Python UDF またはストアドプロシージャを作成するときに、ハンドラー定義のPACKAGESセクションで===、``などのバージョン指定子を使用して、バージョン範囲を指定できるようになりました。

Snowsightのワークシートにおけるタブ機能がリリース ※一般提供

以前からSnowsightのワークシートにおけるタブ切り替えはできるようになっていましたが、このリリースでようやく一般提供となりました!

7.27 Release Notes - August 07-08, 2023

ACCOUNT_USAGEで「CLASS_INSTANCES」ビューが提供開始

ACCOUNT_USAGEで「CLASS_INSTANCES」ビューが提供開始となりました。このビューを参照することで、アカウントで定義されたCLASSのインスタンスをまとめて確認することが出来ます。

実は、先日ANOMALY_DETCTIONFORECASTなどSnowflakeビルトインされた機械学習のモデル構築に関わる一連の仕組みがリリースされましたが、これも実はCLASSインスタンスだったのです。

今後はユーザーでもCLASSインスタンスを定義できるようになってくると思いますので、その際に役立つビューだと思います。

電子メール通知を送るためのストアドプロシージャがリリース ※一般提供

以前から電子メール通知を送るためのストアドプロシージャは使えていたのですが、この度一般提供となりました!これで安心して使うことが出来ますね。

すでに日本でも多くの方が関連する記事を書いています。使い方はこれらの記事も参考になると思います。

7.26 Release Notes - August 01-02, 2023

SELECT句でパターンに一致するカラムの選択と値の置換ができるように ※一般提供

WHERE句でLIKEを使ってパターンに一致するレコードだけに絞り込むことができるように、ILIKE句を使ってパターンに一致するカラムだけに絞り込んだり、REPLACE句を使って値の置換ができるようになりました。

カラム名をすべて入力せずとも、パターンで絞り込むことが出来るのは便利だと思います!

詳細は下記の公式Docもご確認ください。

Behavior Change Log

2023_06バンドルを有効化できるように

8月22日~23日の間にリリースされたVer7.29において、2023_06のバンドルがデフォルトで有効化されるようになりました。

2023_05バンドルがデフォルトで有効化されるように

8月22日~23日の間にリリースされたVer7.29において、2023_05のバンドルがデフォルトで有効化されるようになりました。

おまけ:Modern Data Stack全般の最新情報

Snowflakeも含め、個人的に気になったModern Data Stack全般の最新情報についても、定期的にブログにまとめて投稿しております!こちらもぜひご覧ください。