2023年6月にリリースされたSnowflakeの新機能・変更点まとめ #SnowflakeDB

2023.07.05

さがらです。

2023年6月にリリースされたSnowflakeの新機能と変更点についてのまとめ記事となります。

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

始めに:6月末に開催されたSnowflake Summit 2023について

2023年6月に、アメリカのラスベガスでSnowflake Summit 2023が開催されました!多くの新機能が発表されて、Snowflakeがよりデータアプリケーションに注力していくという思いを強く感じました。

また、Dynamic TablesやNative Applications Frameworkなど、Summitに併せてパブリックプレビューとなった機能もあります。※詳細は後述します

現地参加された方も、すでにレポートを投稿しています!

手前味噌ですが、私もOpening Keynoteについてはブログにまとめているため、ぜひご覧ください!

What's New

Dynamic Tablesがパブリックプレビュー

待ち望んでいた方も多いであろう、Dynamic Tablesがパブリックプレビューとなりました!

CREATE DYNAMIC TABLE AS SELECTの形で記述したSELECT文が返す結果をもとに、TARGET_LAGで指定した時間ごとに対象のテーブルを更新するという機能で、更新時には差分のみを更新する仕様となっています!

これまではタスクとストリームを駆使して構築するしかなかったChange Data Chaptureのデータパイプラインも、Dynamic Tablesを用いれば数行で実現することが可能です。

ただ、全てをDynamic Tablesに置き換えられるというわけではなく、現時点ではUDFがDynamic Tablesでは使えないというところもあります。(参考:@yamnaku_さんのツイートより)

Dynamic Tablesについてより詳細に知りたい場合は、下記の公式Docをご覧ください。

Amazon S3-compatible Storageが一般提供

Amazon S3と互換性のあるストレージ内のデータへのアクセスが一般提供となりました。

具体例として、下記の記事ではCloudflare R2に保存したデータをCOPYする流れを検証しております。

ストアドプロシージャでテーブル・ビュー・関数・クエリを引数として渡すことができるように ※パブリックプレビュー

ストアドプロシージャでテーブル・ビュー・関数・クエリを引数として渡すことができるようになりました。

下記のドキュメントを見ると、引数に指定したテーブルに対して新しいレコードをINSERTEDしたり、引数に指定したクエリが返すレコード数をカウントしたり、といったことがサンプルとして挙がっていました。

Snowpark MLがパブリックプレビュー

Snowflake内で機械学習を行うための、データの前処理・MLモデルのトレーニング・管理・デプロイが行なえるSDKなどを含むPythonツールのセットとして、Snowpark MLがパブリックプレビューとなりました。

Snowpark ML Development と Snowpark ML Opsという2つの主要コンポーネントから構成されているようです。※Snowpark ML Opsを使用するにはSnowflakeへ問い合わせする必要あり

ML-Powered Functionsがパブリックプレビュー

ユーザー側で必要なデータを用意しておけば、すぐにモデルの学習と予測・検出が行えるML-Powered Functionsがパブリックプレビューとなりました。

2023年7月5日時点では、Forecasting、Anomaly Detection、Contribution Explorer、の3つについて機能提供がされております。

Native Applications Frameworkがパブリックプレビュー

Snowflakeでデータアプリケーションを開発・公開できるフレームワークとして、Native Applications Frameworkがパブリックプレビューとなりました。

実際には、Streamlitアプリ、ストアドプロシージャ、ユーザー定義関数、を開発し、Marketplaceを介してユーザーへ公開するという一連の流れを行うことができます。

チュートリアルやQuickstartもあります!

また、Native Applications Frameworkで開発されたアプリの使用量ベースで課金を行える「Custom Event Billing」も併せてパブリックプレビューとなっております。

Java・Scala・Pythonの関数またはストアドプロシージャを用いたファイルの読み取りができるように ※Javaが一般公開、Scala・Pythonがパブリックプレビュー

Java・Scala・Pythonの関数またはストアドプロシージャを用いて、ステージングされたファイルの読み取りができるようになりました。

これにより、ステージングされたファイルをPythonで読み取り、必要な処理を行った結果をDataFrameとして作成後、Snowflakeのテーブルに書き出す、ということも可能になりました。

スキーマ検知機能がCSVとJSONに対応 ※パブリックプレビュー

Snowflakeでは元々、Parquet、Avro、ORC、といったフォーマットにおいてスキーマ検知機能を提供していましたが、今回のアップデートでCSVとJSONも対応するようになりました。

実際には下記の記事のことが、CSVとJSONでも出来るようになっています。CSVとJSONは多くの人が使用するフォーマットだと思いますので、ぜひご活用ください!

列の自動追加を行ってくれるTable Schema Evolutionがリリース ※パブリックプレビュー

COPYコマンドやSnowpipeでロード処理が行われた際、対象テーブルのスキーマ定義と異なる場合には自動で列の追加を行ってくれる「Table Schema Evolution」がリリースされました。

テーブルのスキーマ定義がよく変わるデータについては、有効な場面も多い機能だと思います。また、上述のスキーマ検知機能と併せて、スキーマ変更に関してはメンテナンスが不要なテーブルを定義することも可能です!

詳しくは下記の公式Docもご覧ください。

LIMIT句とORDER BY句を使用したSELECT文のパフォーマンス向上 ※一般提供

LIMIT句とORDER BY句を使用したSELECT文のパフォーマンスが向上しました。

ORDER BY句の場合には整数を保持するカラムをORDER BY句の一番始めに指定しないといけない、などの条件はありますが、パフォーマンスが向上するのは嬉しいですよね!

Snowpark、ユーザー定義関数、ストアドプロシージャでPython 3.10、Python 3.9が使用可能に ※パブリックプレビュー

Snowpark、ユーザー定義関数、ストアドプロシージャでPython 3.10、Python 3.9が使用可能になりました。Pythonを使って各処理を定義していた方からすると嬉しいアップデートだと思います!

ORGANIZATION_USAGEスキーマにおいてACCOUNTSビューが使用可能に ※パブリックプレビュー

ORGANIZATION_USAGEスキーマにおいてACCOUNTSビューが使用可能になりました。

このビューでは、組織内のアカウントについて、アカウント名やリージョンはもちろん、アカウントの名前が変更された後に古いURLでアクセスした履歴がないか、リーダーアカウントであるかどうか、などアカウントに関する幅広い情報を確認可能です。

Behavior Change Log

2023_04のバンドルについて

7月5日時点ではデフォルトで有効化されていないですが、2023_04のバンドルがSnowflakeVer7.19からテストできるようになりました。

提示されている関数・コマンド・ビューが新しいカラムを追加したり、Snowsightがオンデマンド契約のユーザーのデフォルトインターフェースとなったり、という変更がこの2023_04のバンドルに含まれています。

一方で、以下の「できなくなること」については、見覚えのある方は早めに対応することをおすすめします。

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

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