Snowflake Copilot の使用¶
このトピックでは、 Snowflake Copilot とは何か、データ分析ワークフローでどのように使用するかについて紹介します。このトピックの例ではワークシートを使用していますが、 Snowflake Notebooks で Snowflake Copilot を使用する場合も同じ手順が適用されます。
注釈
この機能のプレビューサポートは、次のリージョンのアカウントで利用できます。
AWS us-east-1
AWS us-west-2
AWS eu-central-1
Azure eastus2
概要¶
Snowflake Copilot は、堅牢なデータガバナンスを維持しながらデータ分析を簡素化し、既存のSnowflakeワークフローにシームレスに統合する LLM を搭載したアシスタントです。
Snowflake Copilot は、 Snowflake Cortex 、Snowflakeのインテリジェントなフルマネージド AI サービス内で安全に実行される、Snowflakeによって微調整されたモデルによって駆動されます。このアプローチは、企業データとメタデータが常にSnowflake内に安全に留まることを意味します。 Snowflake Copilot また、 RBAC を完全に尊重し、アクセス可能なデータセットのみに基づいて提案を提供します。
Snowflake Copilot は、自然言語リクエストを使用して、最初から最後までデータ分析を可能にします。手始めに、Copilotを使用して、データの構造に関する質問に答えたり、新しいデータセットの探索をガイドしたりできます。その後、Copilot に SQL クエリの生成と改良を依頼して、データから有用な情報を抽出できます。 Snowflake Copilot は、最適化の推奨や考えられる問題の修正を提案することで、 SQL クエリの改善を支援することもできます。
Snowflake Copilot また、 SQL の流暢さを向上させたり、Snowflakeの機能を理解するのにも役立ちます。Snowflakeでタスクを実行する方法について質問すると、CopilotはSnowflakeのドキュメントに基づいて回答を返します。
SQL のワークシートと Snowsight の Snowflake Notebooks でCopilotとやり取りできます。Copilotパネルを使って、質問を入力することができ、 Snowflake Copilot が回答します。ワークシートまたはノートブックで、SQLクエリの提案を実行できます。
アクセス制御の要件¶
SNOWFLAKE データベースの COPILOT_USER データベースロールには、ユーザーが Snowflake Copilot の機能を使用できるようにする権限が含まれています。デフォルトでは、COPILOT_USERロールはPUBLICロールに付与されます。PUBLIC ロールはすべてのユーザーとロールに自動的に付与されるため、アカウント内のすべてのユーザーが Snowflake Copilot の機能を使用できるようになります。
この権限を持つユーザーは、ワークシートまたはノートブックの右下隅に Ask Copilot が表示され、パネルを使って Snowflake Copilot と対話することができます。
Copilotへのアクセスを制限する¶
すべてのユーザーにこの権限を与えたくない場合は、PUBLICロールのアクセス権を取り消し、特定のロールにアクセス権を与えることができます。
PUBLICロールからCOPILOT_USERデータベースロールを取り消すには、ACCOUNTADMINロールを使用して以下のコマンドを実行します。
USE ROLE ACCOUNTADMIN;
REVOKE DATABASE ROLE SNOWFLAKE.COPILOT_USER
FROM ROLE PUBLIC;
このロールを持たないユーザーは、ワークシートやノートブックの右下隅に Ask Copilot が表示されません。左側のナビゲーションメニューでアクティブロールを切り替えて、Copilotにアクセスできるロールに切り替えると、 Ask Copilot メニューを再度表示できます。詳細については、 アクティブなロールへの切り替え をご参照ください。
そして、特定のロールに選択的にアクセスを提供することができます。SNOWFLAKE.COPILOT_USER データベースロールをユーザーに直接付与することはできません。詳細については、 SNOWFLAKE データベースロールの使用 をご参照ください。ACCOUNTADMIN ロールを持つユーザーは、ユーザーが Snowflake Copilot 機能にアクセスできるように、このロールをカスタムロールに付与することができます。以下の例では、 ACCOUNTADMIN ロールを引き受けて、この目的のために作成したアカウントロール copilot_access_role
を介して、ユーザー some_user
に COPILOT_USER データベースロールを付与します。
USE ROLE ACCOUNTADMIN;
CREATE ROLE copilot_access_role;
GRANT DATABASE ROLE SNOWFLAKE.COPILOT_USER TO ROLE copilot_access_role;
GRANT ROLE copilot_access_role TO USER some_user;
また、特定のユーザーグループが一般的に使用する既存のロールを通じて、 Snowflake Copilot へのアクセス権を付与することもできます。(ユーザーのロール を参照。)例えば、組織内のアナリストが既定のロールとして使用する analyst
ロールを作成した場合、 GRANT ステートメント1つで、これらのユーザーに Snowflake Copilot へのアクセス権を簡単に付与することができます。
GRANT DATABASE ROLE SNOWFLAKE.COPILOT_USER TO ROLE analyst;
サポートされているユースケース¶
新しいデータセットの構造やニュアンスを知るために、自由形式の質問をすることで、 データを探索します。
簡単な英語で質問して SQLクエリを生成します。
ボタンをクリックするだけで、 |sf-copilot| が提案する SQL クエリ を試すことができます。実行前にクエリを編集することもできます。
提案された SQL クエリを洗練させ、分析をより深く掘り下げるためのフォローアップの質問をすることにより、 Snowflake Copilot との会話を介して 複雑なクエリを構築 します。
Snowflakeのコンセプト、機能、特徴について質問することで、 Snowflakeについて学びます。
クエリの効率を評価したり、最適化を見つけたり、クエリが何をするのかを説明したりするために、 Snowflake Copilot に質問して、 クエリを改善します。
Snowflake Copilot からの各回答に対するフィードバック (サムアップまたはサムダウン)を提供してください。
Snowflake Copilot が回答を生成する際に考慮する、一連の設定や特定の業務知識などの カスタム指示を追加します。
制限事項¶
制限された言語サポート: 現在、英語とSQLのみサポートしています。
データへのアクセスなし: Snowflake Copilot はテーブル内のデータにアクセスできません。列の特定の値でフィルタリングしたい場合は、その値を提供する必要があります。例えば、 Snowflake Copilot にA列の値が "X "に等しい行をすべて返すように要求する場合、リクエストに "X "という値を指定する必要があります。 SQLステートメントの構築と実行 の例をご参照ください。
データベースまたはスキーマ間のクエリはサポートされていません: 異なるスキーマやデータベースのデータを結合するビューを作成して使用することで、これを回避することができます。
遅延した応答: Snowflake Copilot 提供された応答の長さによっては、応答が完了するまでに1秒かかる場合があります。
SQL 提案が常に機能するとは限りません。 Snowflake Copilot は無効な SQL 構文、存在しないテーブルや列を含むクエリを提案することがあります。ご意見・ご感想は、その回答に対する「サムズアップ」または「サムズダウン」ボタンでお寄せください。このフィードバックは、この機能の改善に役立ちます。
新しいデータベース、スキーマ、テーブルの検出の遅れ: Snowflake Copilot が新しく作成されたデータベース、スキーマ、テーブルを認識するのに3~4時間かかる場合があります。
考慮されるテーブルと列の数は限られています: レスポンスを生成するために、 Snowflake Copilot はまず、リクエストに最も関連性の高いテーブルと列を検索します。検索結果は、関連性によってランク付けされ、結果の上位10テーブルと各テーブルの上位10列のみが、回答を生成する際に考慮されます。
Snowflake Copilot を使用する方法¶
Snowflake Copilot は、追加設定なしですぐに使用できます。 Snowflake Copilot を使用する際は、以下の点に注意してください:
Snowflake Copilot との各チャットセッションは、特定のワークシートまたはノートブックに関連付けられています。新しいワークシートまたはノートブックを開くと、新しいチャットセッションが開きます。
Snowflake Copilot を使用するには、セッション中にデータベースとスキーマが使用されている必要があります。Copilotはこれらを使用して、適切な回答を生成します。
Snowflake Copilot は、データベース、スキーマ、テーブル、列の名前と、列のデータ型を使用して、クエリに使用できるデータを決定します。
選択したデータベースとスキーマに基づいて Snowflake Copilot が質問に回答できない場合、Snowflakeのドキュメントや SQL の一般的な知識など、他の方法を使用して回答を試みることがあります。予想外の反応があった場合は、サムズアップボタンとサムズダウンボタンを使ってフィードバックを残すことができます。
質問の中でテーブル名や列名を参照する必要がある場合は、名前のプレフィックスを
@
にします。特定の表や列を参照することで、 Snowflake Copilot がより正確な回答を提供できます。最適なパフォーマンスを得るためには、データベース、スキーマ、テーブル、および列に意味のある名前を使用し、列に適切なデータ型が割り当てられていることを確認します。
Snowflake Copilot を使い始めるには、以下の手順に従ってください:
新しいワークシートを作成するか、既存のワークシートを開きます。
ワークシートの右下隅で Ask Copilot を選択します。ワークシートの右側に Snowflake Copilot パネルが開きます。
現在のワークシートでデータベースとスキーマが選択されていることを確認します。そうでない場合は、ワークシートの上部にあるセレクタか、 Snowflake Copilot メッセージボックスの下にあるセレクタを使って選択することができます。
メッセージボックスに質問を入力し、送信アイコンを選択するか、Enter を押して送信します。 Snowflake Copilot パネルに回答が表示されます。
Snowflake Copilot からの回答には、 SQL が含まれます。
Run を選択して、クエリを実行します。これでクエリがワークシートに追加され、実行されます。
実行前にクエリを編集するには、 Add を選択します。これでクエリがワークシートに追加されます。
カスタム指示を追加する¶
Snowflake Copilot は、応答方法をカスタマイズするためのカスタム指示を受け入れます。有効にすると、これらの指示は、 Snowflake Copilot の背後にあるモデルに送信されるプロンプトを強化するために使用され、Copilot が新しい応答を生成するときに考慮されます。カスタム指示には、特定のトーンの使用や特定の方法での応答の指示、SQLの書き方に関する好み、または考慮すべきデータに関する追加情報を含めることができます。
カスタム指示を追加する際は、以下の点に注意してください:
カスタム指示には2,000文字の制限があります。
Snowflakeでは、カスタム指示を平易な英語で指定することを推奨しています。
指示は入力したユーザーに固有のもので、 Snowflake Copilot とのすべての会話に使用されます。
Snowflake Copilot にカスタム指示を追加するには、以下の手順に従ってください:
新しいワークシートを作成するか、既存のワークシートを開きます。
ワークシートの右下隅で Ask Copilot を選択します。ワークシートの右側に Snowflake Copilot パネルが開きます。
Snowflake Copilot の最上部で、 Copilot メニューを選択します。
ドロップダウンメニューから、 Custom instructions を選択します。
カスタム指示テキストボックスを有効にするには、カスタム指示ウィンドウの左下にある Enable for new chats トグルを選択します。
平易なテキスト英語で指示を入力してください。
終了したら、 Save を選択します。
Copilotパネルで Snowflake Copilot と会話を続けます。
例¶
以下のセクションでは、その方法を示す例を示します。
これらの例では、 Snowflake Marketplace のサンプルデータセットを使用しています。
前提条件¶
このセクションの例では、 Snowflake Marketplace の Cybersyn Github Archiveデータセット を使用します。
Cybersyn Github Archiveデータセット をアカウントにインストールしてください。
新しいワークシートを作成するか、既存のワークシートを開きます。
ワークシートの右下隅で Ask Copilot を選択します。
Cybersyn Github Archiveデータベースとスキーマを選択します。
データの探索¶
次の例は、 Snowflake Copilot を使用してデータセットを探索する方法を示しています。
「このデータセットについて、どのような質問ができますか?」など自由形式の質問を入力します。
press Enter と Snowflake Copilot は、選択したデータベースとスキーマに基づいて応答を生成します。
例えば、「どのような種類のイベントでフィルターをかけることができますか?」や、「これらのテーブルの中で結合可能なものはありますか?」など、データについてさらに明確な質問をします。
Snowflake Copilot からの応答に SQL ステートメントが含まれている場合、 Add を選択してクエリをワークシートの最後に追加し、実行前に編集するか、 Run を選択してクエリを追加し、自動的に実行することができます。
SQLステートメントの構築と実行¶
次の例では、 Snowflake Copilot を使って SQL クエリを生成する方法を示しています。
Snowflake Copilot メッセージボックスに「ここ1年でいくつの星を受け取りましたか?」という質問を入力し、Enter の順に押します。 Snowflake Copilot 質問に答える SQL クエリで応答します。
ワークシートの最後にクエリを追加するには、 Add を選択します。
「各月にこれを表示してください」という質問を入力し、Enter を押します。 Snowflake Copilot は、質問に答える SQL クエリで応答します。
Run を選択してクエリをワークシートに追加し、クエリを実行します。
Snowflake Copilot はテーブル内のデータにアクセスできません。列の特定の値に基づいてフィルタリングする SQL ステートメントを Snowflake Copilot に構築させたい場合は、フィルタリングする値を指定する必要があります。
メッセージボックスに「snowflakeで始まるレポ名を全て教えてください。」と入力し、Enter の順に押します。 Snowflake Copilot は、指定したフィルタ値を使用する SQL クエリで応答します。
実行前にクエリを編集する場合は Add を選択し、ワークシートにクエリを追加して実行する場合は Run を選択します。
SQL ステートメントを説明する¶
次の例は、 Snowflake Copilot を使って、作業中の SQL ステートメントを説明する方法を示しています。
Snowflake Copilot メッセージボックスに、以下の質問と SQL クエリを入力します。
Can you explain this query to me step-by-step?
SELECT github_repos.repo_name, COUNT(github_stars.repo_id) AS total_stars FROM github_repos JOIN github_stars ON github_repos.repo_id = github_stars.repo_id GROUP BY github_repos.repo_name ORDER BY total_stars DESC;
Snowflake Copilot は、提供されたクエリのステップバイステップの説明で応答します。
SQLとSnowflakeについて質問する¶
Snowflake Copilot は、Snowflake のドキュメントにアクセスし、Snowflakeまたは SQL に関する一般的な質問にお答えします。以下はその例です。
SQL結合の書き方は?
Snowpark Cortexとは?
Snowflakeにデータを取り込むにはどうすればよいですか?
Snowflake Copilot の使用上の注意¶
キュレーションされた ビュー を作成すると、 Snowflake Copilot のパフォーマンスを大幅に向上させることができます。
表示を作成する際は、以下のガイドラインに従ってください:
ガイドライン
例
表示とその列には、説明的でわかりやすい名前を使用します。
名前を決める際には、 Snowflake Copilot を使用する際に使用する可能性の高いビジネスおよびデータの分類法を使用してください。
列に特定のセールの日付が含まれている場合、その列に
sale_date
という名前を付けます。すべての列が適切なデータ型を持っていることを確認してください。
列に特定のセールスの日付が含まれている場合は、 DATE 型であることを確認してください。
よく使用されるメトリクス/式を新しい列として定義します。
利益が
revenue - cost
として定義されている場合は、表示に(revenue - cost) AS profit
列を作成します。可能であれば、一般的な結合と複雑な結合をキャプチャしてください。
products
、sales
の2つのテーブルが頻繁に結合される場合は、ビューがこれらのテーブルを結合していることを確認してください。共通の結合テーブル間に複数の結合パスが存在する場合、優先する結合パスを表示で使用してください。
質問するときはできるだけ具体的に尋ねます。データについて限られた知識しか持たない人間に質問していると想像してください。
列内の特定の値でフィルタリングしたい場合は、 Snowflake Copilot を積極的にガイドする必要があります。 Snowflake Copilot にある列のすべての異なる値を返すクエリを求めることができます。
コスト¶
Snowflake Copilot は現在無料で使用できます。価格と請求の詳細については計画中ですが、この機能に課金が適用される前にお知らせします。
法的通知¶
Snowflake Copilot は、MetaのCode LlamaとLlama Guardを含む機械学習テクノロジーを搭載しています。Foundation Code LLama とLlama Guardモデルは、 LLaMA 2 Community License とCopyright (c) Meta Platforms, Inc.によりライセンス付与されています。All Rights Reserved.この機能の使用は、Metaの 許容可能な使用ポリシー の対象となります。
詳細については、 Snowflake AI と ML をご参照ください。
インプットとアウトプットのデータ分類は以下の表の通りです。
入力データの分類 |
出力データの分類 |
指定 |
---|---|---|
Usage Data |
Usage Data |
Covered AI Features [1] |
詳細については、 Snowflake AI と ML をご参照ください。