[新機能]Snowflake CopilotがAWS東京リージョンでも利用可能となりました
さがらです。
Snowflake CopilotがAWS東京リージョンでも利用可能となりました!(私自身も@civitaspoさんのXの投稿で知りましたw)
まだリリースノートにも反映がされていませんが、簡単にどのようなことが出来るかをやってみたのでこの記事でまとめてみます。
Snowflake Copilotとは
Snowflake CopilotはSnowflakeのSQLワークシートとNotebooks上で利用できる機能で、自然言語で問い合わせをすることで、データ構造に対する質問やSQLクエリの生成を行うことが可能です。
2025年1月29日時点では、無料で利用することが出来ます。(将来的には有償となる可能性がありますので、ご注意ください。)
その他にもクロスデータベース・クロススキーマでのクエリ生成はサポートしていないなど制限事項があります。詳細はドキュメントをご覧ください。
やってみた
立ち上げ
AWS東京リージョンのSnowflakeのトライアルアカウントを用いて、SNOWFLAKE_SAMPLE_DATA
内のデータに対して質問を行ってみたいと思います。
SQLワークシートを立ち上げて、右下の「Ask Copilot」を押すと、画面の右側にCopilotのインターフェースが表示されます。
特定のデータに関する質問
自然言語で問い合わせをする前に、対象のデータベースとスキーマを選択します。
雑に、「TPCH_SF1スキーマにはどんなテーブルが入っていますか」と聞いてみます。
すると、下図のようにテーブルの一覧とどんな情報が含まれているかの回答が返ってきました。
次に、「TPCH_SF1スキーマのテーブルを用いて、顧客別の売上を確認したいです」と聞いてみます。
すると、下図のように具体的なクエリと併せて回答が返ってきました。+Add
を押すとワークシートに生成されたSQLが転記され、そのまま実行することが出来ます。
クエリのチューニングについての質問
次に、パフォーマンスがよくないクエリを提示して、チューニングを行ってくれるかどうかを確認してみます。
まず、結合条件を明示的にしていないクエリを提示した場合にどのような回答が来るかを聞いてみます。
SELECT o.o_orderkey, c.c_name, l.l_quantity
FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1".ORDERS o,
"SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1".CUSTOMER c,
"SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1".LINEITEM l
WHERE o.o_orderdate > '1995-01-01';
すると、下図のように改善点を明示した上で回答が返ってきました。
次に、無駄に同じテーブルに対するSELECT文のUNIONを行っている場合、どのような回答が来るかを聞いてみます。(追記:元々は別の文字列関数に関する例を載せていましたが、正しくない内容であったため別の例に変更しています。)
SELECT l_orderkey, l_quantity
FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1".LINEITEM
WHERE l_quantity > 100
UNION ALL
SELECT l_orderkey, l_quantity
FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1".LINEITEM
WHERE l_quantity > 50
UNION ALL
SELECT l_orderkey, l_quantity
FROM "SNOWFLAKE_SAMPLE_DATA"."TPCH_SF1".LINEITEM
WHERE l_quantity > 25;
すると、下図のように無駄な条件分岐を指摘してくれた上で、回答が返ってきました。
最後に
簡素な内容ではありましたが、Snowflake CopilotがAWS東京リージョンでも利用可能となったため、どのように使えるかを確認してみました。
個人的に、クエリのチューニングについてもアドバイスを貰えることがとてもありがたいですね!!2025年1月29日現在は無料で利用可能なので、ぜひお試し感覚で使ってみてください!