はじめに
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で使用するセマンティックビューを作成する具体的な手順を紹介しました。セマンティックビューはデータの可視化にも利用することができます。詳細に作りこんでいくことで正しいテーブルの関係性や構造を社内で一元化することができ、強力なデータ活用の助けにもなります。
この記事が、皆さんの会社のデータ活用を、一歩前に進めるきっかけになれば幸いです。