【Snowflake】CortexAnalystで使うセマンティックビューを作成してみた

はじめに

CortexAnalystはSnowflake上のAI機能の一つです。構造化データ(整理・整形されたデータ)に基づいて、自然言語による問い合わせが可能です。正確な回答をするために、テーブル間の関係性や各テーブルのカラムの意味を記載したセマンティックビューを作成します。セマンティックビューは、複雑なテーブルの構造を分かりやすく翻訳した仮想的なテーブルです。

この記事では、データソースにTableauの「製造業ユーザー会」から提供されているデータセットを用いて、CortexAnalystで使用するセマンティックビューを作成します。Snowflake上ではGUIにより簡単に作成することができます。

製造業データに特化したサンプルデータセットはこちらからダウンロードいただけます
出典:Tableau製造業ユーザー会

今回は「サンプルスーパーファクトリー_品質管理」と、「サンプルスーパーファクトリー_生産管理」の中の「商品マスタ」シートを使用します。

環境作成

SQLワークシートを作成し、下記のSQLを実行します。CortexAnalyst用のロールやデータベース等を作成します。

--Cortexを利用するロールを作成、自分にロールを付与
USE ROLE SECURITYADMIN;
CREATE ROLE IF NOT EXISTS cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;
GRANT ROLE cortex_user_role TO USER RHIRASAWA;

--デモ用のデータベース・スキーマを作成
USE ROLE sysadmin;
CREATE OR REPLACE DATABASE CORTEX_DEMO;
CREATE OR REPLACE SCHEMA CORTEX_DEMO.FACTORY_OPERATIONS;

--実行するウェアハウスを作成
CREATE OR REPLACE WAREHOUSE cortex_analyst_wh
    WAREHOUSE_SIZE = 'large'
    WAREHOUSE_TYPE = 'standard'
    AUTO_SUSPEND = 60
    AUTO_RESUME = TRUE
    INITIALLY_SUSPENDED = TRUE
COMMENT = 'Warehouse for Cortex Analyst demo';

--作成したウェアハウスをCortex用のロールが使用できるよう変更
GRANT USAGE ON WAREHOUSE cortex_analyst_wh TO ROLE cortex_user_role;
GRANT OPERATE ON WAREHOUSE cortex_analyst_wh TO ROLE cortex_user_role;

--Cortex用のロールがデモ用のデータベース・スキーマを利用できるよう変更
GRANT OWNERSHIP ON SCHEMA CORTEX_DEMO.FACTORY_OPERATIONS TO ROLE cortex_user_role;
GRANT OWNERSHIP ON DATABASE CORTEX_DEMO TO ROLE cortex_user_role;

--使用するロール、データベース、スキーマを作成したものに変更
USE ROLE cortex_user_role;
USE DATABASE CORTEX_DEMO;
USE SCHEMA CORTEX_DEMO.FACTORY_OPERATIONS;

--ステージ(データを置く場所)を作成
CREATE OR REPLACE STAGE raw_data DIRECTORY = (ENABLE = TRUE);

利用するデータソースをSnowflake上にロード

まず、作成したステージに移動し、右上の「+Files」を選択します。

データソースを選んでアップロードをします。この際、ExcelファイルはCSVデータに変更しておきます。

ロードしたデータからテーブルを作成

三転リーダから、「Load into table」を選択します。

テーブル名を入力しNEXTをクリックします。

カラム名が日本語で読み込まれています。日本語の場合、都度二重引用符で囲むなどの対応が必要が必要になるため、今回は英語に変更します。

テーブルへのロードが完了します。

同様に商品マスタのテーブルも作成します。

セマンティックビューを作成

準備が完了しましたのでセマンティックビューを作成します。サイドバーの「AI&ML」から「CortexAnalyst」を選択、左上の「Create New」から「Create new Semantic View」を選択します。

名前、説明を記載しNEXTをクリックします。

先ほど作成した2つのテーブルを選択し、今回はすべてのカラムを利用します。

セマンティックビューが出来上がりました。内容を確認します。

各テーブルやカラム名の意味合いは問題なく作成されていました。ただしテーブル間の関係性がないため作成します。商品マスタの主キーに商品IDを設定し、商品IDによるリレーションシップを設定します。

こちらでセマンティックビューの作成は完了です。画面右側のプレイグラウンドにて、実際に回答生成を確認できます。実際にアプリケーション等で使用する際は、「Cortex Analyst REST API」を通してセマンティックビューを使用した自然言語の回答生成が可能です。

最後に

今回はSnowflake上の作成機能を活用し、CortexAnalystで使用するセマンティックビューを作成する具体的な手順を紹介しました。セマンティックビューはデータの可視化にも利用することができます。詳細に作りこんでいくことで正しいテーブルの関係性や構造を社内で一元化することができ、強力なデータ活用の助けにもなります。

この記事が、皆さんの会社のデータ活用を、一歩前に進めるきっかけになれば幸いです。

ShtockData

お問い合わせフォーム

お問い合わせ項目を選択してください