❄️

Snowflake のセマンティックビューを AI で自動生成しよう

に公開

はじめに

Snowflake で注目を集めている Cortex Analyst は、自然言語でデータ分析ができる画期的な機能です。普段クエリを書かないビジネスユーザーが「先月の売上トップ10の商品は?」と聞くだけで SQL を書かずにデータ分析ができる、まさに データの民主化 を実現する世界ですね。

しかし、Cortex Analyst が威力を発揮するためには、その前段として セマンティックレイヤ の整備が不可欠です。Snowflake では Semantic Model (セマンティックモデル) または Semantic View (セマンティックビュー) という機能でこれを実現できますが、実際にセマンティックレイヤを作成するとなると、テーブル構造の理解、ビジネスロジックの定義、適切な説明やシノニムの設定など、一定の時間と労力がかかるのも事実です。

「せっかく Cortex Analyst を使いたいのに、セマンティックレイヤの準備で時間がかかってしまう...」そんな課題を抱えているあなた!今回は AI を活用してセマンティックビューを自動生成するストアドプロシージャー を作成してみたのでご紹介したいと思います。このツールを使えば、既存のテーブルからすぐにベースとなるセマンティックビューを生成することができるため、実際にビジネスユーザーが活用するためのスタートダッシュをすることが可能となります。

Semantic View (セマンティックビュー) とは

セマンティックビューは、物理的なデータベーステーブルに ビジネスコンテキスト を付与する Snowflake のスキーマレベルオブジェクトです。技術的なカラム名 (例: amt_ttl_pre_dsc) を、ビジネスユーザーが理解できる概念 (例: 「総売上」「売上合計」) にマッピングし、詳細な説明を付与 (例: 「首都圏の店舗における売上の合計値を格納したカラム」) することで、データとビジネスの間のギャップを埋めます。

さらに重要なのは、セマンティックビューが AI にデータベース構造とビジネスロジックを正しく理解させる役割 を果たす点です。Cortex Analyst が自然言語の質問から高精度な SQL クエリを生成できるのは、セマンティックレイヤがあるからこそです。シノニム (同義語) や詳細な説明により、AI は「先月の売上」「総売上」「販売額」といった様々な表現を同じ概念として理解し、適切なテーブルとカラムを選択して正確なクエリを生成できるようになるのです。

セマンティックビューの構成要素

セマンティックビューは以下の要素で構成されます:

要素 説明
Facts 主に数値型の事実データ (行レベルの属性) 販売数量、単価、金額など
Dimensions カテゴリや属性データ (分析の軸) 商品名、顧客ID、日付、地域など
Metrics 集計された指標 (ビジネスKPI) 総売上、平均単価、売上成長率など

さらに、各要素には以下を定義できます:

  • Synonyms (シノニム): ビジネスシーンでの別名や自然な言い回し (例: 「売上」→「販売額」「収益」)
  • Comment: ビジネス的な説明や単位、範囲などの詳細情報

なぜセマンティックビューが重要なのか

セマンティックビューは以下の価値を提供します:

  1. Cortex Analyst の精度向上: AI が自然言語を理解し、正確な SQL を生成するための拠り所
  2. 一貫性のあるビジネス定義: 組織全体で統一されたビジネスメトリクスの定義
  3. データの民主化: 技術者でなくてもデータにアクセスできる環境の実現

詳細については Snowflake 公式ドキュメント - Semantic View の概要 をご参照ください。

セマンティックレイヤ作成の課題

セマンティックレイヤを手動で作成する場合、以下のような作業が必要となります:

  1. テーブル構造の理解 (テーブル定義、カラム名、データ型、サンプルデータの確認)
  2. Facts、Dimensions、Metrics の分類
  3. ビジネスシーンで実際に使われているシノニムの確認
  4. 各要素への適切な説明 (Comment) の検討
  5. SQL 構文での定義

特に大規模なテーブルや複数のテーブルを扱う場合、この作業は一定の時間がかかります。とはいえ、あまり準備に時間をかけてしまうとビジネスユーザー向けの分析環境の実現が遠のいてしまいますので、まずはある程度の品質の叩き台があると非常に便利なのです。

AI による自動生成ストアドプロシージャー

概要

今回ご紹介する GENERATE_SEMANTIC_VIEW ストアドプロシージャーは、以下のステップでセマンティックビューを自動生成します:

  1. テーブル情報の取得: DESCRIBE TABLE でカラム情報、データ型、コメントを取得
  2. サンプルデータの分析: 先頭5行のサンプルデータから実際の用途とデータ特性を推測
  3. AI による SQL 生成: AI_COMPLETE 関数の LLM (claude-sonnet-4-5 など) がセマンティックビューの DDL を生成
  4. セマンティックビューの作成: 生成された SQL を実行

主な特徴

特徴 説明
完全自動化 テーブル名を指定するだけで、Facts、Dimensions、Metrics を自動分類
豊富なシノニム サンプルデータから実際の用途を推測し、ビジネスシーンで使われる自然な別名を生成
詳細な説明文 各要素に対してビジネス的な意味を含む Comment を自動生成
カスタマイズ可能 使用する LLM モデルを指定可能 (デフォルト: claude-sonnet-4-5)

ストアドプロシージャーのコード

GENERATE_SEMANTIC_VIEW ストアドプロシージャーの全体像は以下の通りです。

完全なコードは以下のアコーディオンを開いてご覧ください:

ソースコード
-- ================================================================================
-- セマンティックビュー自動生成ストアドプロシージャー
-- 
-- 説明: 指定されたテーブルから自動的にセマンティックビューを生成
-- 作成日: 20251009
-- Created by Tsubasa Kanno @Snowflake
-- ================================================================================

CREATE OR REPLACE PROCEDURE GENERATE_SEMANTIC_VIEW(
    SOURCE_DATABASE VARCHAR,      -- ソースデータベース名
    SOURCE_SCHEMA VARCHAR,        -- ソーススキーマ名
    SOURCE_TABLE VARCHAR,         -- ソーステーブル名
    TARGET_DATABASE VARCHAR,      -- ターゲットデータベース名
    TARGET_SCHEMA VARCHAR,        -- ターゲットスキーマ名
    TARGET_VIEW_NAME VARCHAR,     -- 作成するセマンティックビュー名
    LLM_MODEL VARCHAR DEFAULT 'claude-sonnet-4-5' -- 使用するLLMモデル
)
RETURNS VARCHAR
LANGUAGE SQL
EXECUTE AS CALLER
AS
$$
DECLARE
    -- テーブル情報
    column_info VARCHAR;
    sample_data_json VARCHAR;
    table_comment VARCHAR;
    
    -- AI生成結果
    ai_response VARCHAR;
    
    -- 最終SQL
    create_view_sql VARCHAR;
    
BEGIN
    -- ================================================================================
    -- STEP 1: テーブル情報の取得
    -- ================================================================================
    
    -- カラム情報を取得 (DESCRIBE TABLEを使用)
    DECLARE
        describe_sql VARCHAR;
        rs RESULTSET;
    BEGIN
        describe_sql := 'DESCRIBE TABLE ' || :SOURCE_DATABASE || '.' || :SOURCE_SCHEMA || '.' || :SOURCE_TABLE;
        rs := (EXECUTE IMMEDIATE :describe_sql);
        
        -- 結果から情報を取得
        -- $1: カラム名, $2: データ型, $10: コメント
        SELECT LISTAGG(
            $1 || ':' || $2 || CASE WHEN $10 IS NOT NULL AND $10 != '' THEN '(' || $10 || ')' ELSE '' END,
            ', '
        ) INTO column_info
        FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
        
    EXCEPTION
        WHEN OTHER THEN
            RETURN 'エラー: テーブル情報を取得できません - ' || :SOURCE_DATABASE || '.' || :SOURCE_SCHEMA || '.' || :SOURCE_TABLE || '. エラー: ' || SQLERRM;
    END;
    
    -- エラーチェック
    IF (column_info IS NULL OR LENGTH(:column_info) = 0) THEN
        RETURN 'エラー: カラム情報が空です - ' || :SOURCE_DATABASE || '.' || :SOURCE_SCHEMA || '.' || :SOURCE_TABLE;
    END IF;
    
    -- テーブルコメントを取得
    SELECT COMMENT INTO table_comment
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_CATALOG = :SOURCE_DATABASE
      AND TABLE_SCHEMA = :SOURCE_SCHEMA
      AND TABLE_NAME = :SOURCE_TABLE;
    
    -- サンプルデータを取得 (先頭5行)
    DECLARE
        sample_sql VARCHAR;
        sample_rs RESULTSET;
    BEGIN
        sample_sql := 'SELECT * FROM ' || :SOURCE_DATABASE || '.' || :SOURCE_SCHEMA || '.' || :SOURCE_TABLE || ' LIMIT 5';
        sample_rs := (EXECUTE IMMEDIATE :sample_sql);
        
        -- サンプルデータをJSON形式で取得
        SELECT TO_VARCHAR(ARRAY_AGG(OBJECT_CONSTRUCT(*))) INTO sample_data_json
        FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
        
    EXCEPTION
        WHEN OTHER THEN
            sample_data_json := 'サンプルデータ取得不可';
    END;
    
    -- ================================================================================
    -- STEP 2: AIで完全なSemantic View定義を生成
    -- ================================================================================
    
    SELECT SNOWFLAKE.CORTEX.COMPLETE(
        :LLM_MODEL,
        CONCAT(
            '【重要】以下の情報を使用してSnowflakeのセマンティックビューを生成してください。',
            '\n\n★存在しないカラム名は絶対に使わないでください★',
            '\n\n【テーブル情報】',
            '\nテーブル: ', :SOURCE_DATABASE, '.', :SOURCE_SCHEMA, '.', :SOURCE_TABLE,
            '\nエイリアス: ', :SOURCE_TABLE,
            '\nテーブルコメント: ', COALESCE(:table_comment, 'なし'),
            '\n\n【実際に存在するカラム (これ以外は使用禁止)】',
            '\n', :column_info,
            '\n\n【サンプルデータ (内容を理解するための参考情報)】',
            '\n', SUBSTRING(:sample_data_json, 1, 1000),
            '\n\n【生成するSQL】',
            '\nCREATE OR REPLACE SEMANTIC VIEW ', :TARGET_DATABASE, '.', :TARGET_SCHEMA, '.', :TARGET_VIEW_NAME,
            '\n  TABLES (',
            '\n    ', :SOURCE_TABLE, ' AS ', :SOURCE_DATABASE, '.', :SOURCE_SCHEMA, '.', :SOURCE_TABLE,
            '\n      WITH SYNONYMS (''日本語別名1'', ''日本語別名2'', ''日本語別名3'', ''日本語別名4'')',
            '\n      COMMENT = ''テーブルの詳細な日本語説明''',
            '\n  )',
            '\n  FACTS (',
            '\n    ', :SOURCE_TABLE, '.fact_name AS 実在するカラム名',
            '\n      WITH SYNONYMS (''別名1'', ''別名2'')',
            '\n      COMMENT = ''カラムの詳細な日本語の説明''',
            '\n  )',
            '\n  DIMENSIONS (',
            '\n    ', :SOURCE_TABLE, '.dim_name AS 実在するカラム名',
            '\n      WITH SYNONYMS (''別名1'', ''別名2'')',
            '\n      COMMENT = ''カラムの詳細な日本語の説明''',
            '\n  )',
            '\n  METRICS (',
            '\n    ', :SOURCE_TABLE, '.metric_name AS SUM(実在するカラム名)',
            '\n      WITH SYNONYMS (''別名1'', ''別名2'')',
            '\n      COMMENT = ''カラムの詳細な日本語の説明''',
            '\n  )',
            '\n  COMMENT = ''セマンティックビューの詳細な日本語の説明'';',
            '\n\n【絶対に守るルール】',
            '\n★★★最重要★★★ 上記カラムリストに存在するカラム名のみ使用',
            '\n\n0. Primary Keyの省略:',
            '\n   - PRIMARY KEY句は記述しないでください',
            '\n   - Snowflakeでは主キー制約は機能せず必須ではないため省略',
            '\n\n1. カラム名の使用:',
            '\n   - ASの右側で使うカラム名も、上記リストに存在するものだけ',
            '\n   - 例:YEAR(TRANSACTION_DATE) ← TRANSACTION_DATEが実在する場合のみOK',
            '\n   - 例:YEAR(ORDER_DATE) ← ORDER_DATEが存在しない場合は絶対NG',
            '\n\n2. FACTS (数値データ):',
            '\n   - 数量、金額、価格、スコア、率などの数値型カラム',
            '\n   - 単純なカラム参照と計算式の両方を含める',
            '\n   - 例 (単純):QUANTITY、PRICE、AMOUNT',
            '\n   - 例 (計算):revenue AS QUANTITY * UNIT_PRICE、discount_amount AS TOTAL_PRICE * 0.1',
            '\n\n3. DIMENSIONS (属性データ):',
            '\n   - ID、名前、日付、カテゴリ、ステータス',
            '\n   - FACTSと重複しない',
            '\n\n4. 名前の重複禁止:左側のテーブル.名前は全て異なる',
            '\n\n5. 日付派生の命名:元カラム名_year、元カラム名_month',
            '\n\n6. シノニムの充実化 (Cortex Analystがユーザーの依頼を正確に理解するために重要):',
            '\n   - テーブル:4-5個の業務で使われる別名',
            '\n   - 各DIMENSIONS、FACTS、METRICS:2-3個の自然な別名',
            '\n   - サンプルデータから実際の用途を推測して適切な別名を選択',
            '\n   - 例:売上金額 → 「総売上」「売上合計」「販売額」',
            '\n   - 例:商品ID → 「プロダクトID」「商品番号」「品番」',
            '\n\n7. COMMENTの充実化:',
            '\n   - サンプルデータから具体的な説明を生成',
            '\n   - ビジネス的な意味を含める',
            '\n   - 単位や範囲も記載',
            '\n\n8. サンプルデータの活用:',
            '\n   - サンプルデータの内容から実際の用途を理解',
            '\n   - より具体的で実用的なシノニムを生成',
            '\n   - データの特性 (範囲、単位等) をCOMMENTに反映',
            '\n\n9. 豊富なFACTSとDIMENSIONSを生成:',
            '\n   - FACTSは5-10個程度 (単純なカラム + 計算式)',
            '\n   - DIMENSIONSは5-15個程度 (元カラム + 日付派生)',
            '\n   - METRICSは4-8個程度 (様々な集計パターン)',
            '\n\n10. 出力:SQL構文のみ (```、説明文は不要)',
            '\n\n11. 日本語:シノニムとCOMMENTは全て日本語',
            '\n\nCREATE SEMANTIC VIEW文のみを出力:'
        )
    ) INTO ai_response;
    
    -- デバッグ: AI応答の長さを確認
    IF (:ai_response IS NULL OR LENGTH(:ai_response) = 0) THEN
        RETURN 'エラー: AI_COMPLETEが空の応答を返しました。カラム情報: ' || SUBSTRING(:column_info, 1, 500);
    END IF;
    
    -- 余計な文字を削除
    create_view_sql := :ai_response;
    create_view_sql := REPLACE(:create_view_sql, '```sql', '');
    create_view_sql := REPLACE(:create_view_sql, '```', '');
    create_view_sql := REPLACE(:create_view_sql, '"', '''');
    create_view_sql := REPLACE(:create_view_sql, '修正後:', '');
    create_view_sql := REPLACE(:create_view_sql, '修正内容:', '');
    create_view_sql := REPLACE(:create_view_sql, '**', '');
    create_view_sql := TRIM(:create_view_sql);
    
    -- 最終確認: SQL文が空でないかチェック
    IF (:create_view_sql IS NULL OR LENGTH(:create_view_sql) < 50) THEN
        RETURN 'エラー: 生成されたSQLが空または短すぎます。AI応答: ' || SUBSTRING(:ai_response, 1, 1000);
    END IF;
    
    -- ================================================================================
    -- STEP 4: セマンティックビューを作成
    -- ================================================================================
    
    BEGIN
        EXECUTE IMMEDIATE :create_view_sql;
        RETURN 'セマンティックビュー ' || :TARGET_DATABASE || '.' || :TARGET_SCHEMA || '.' || :TARGET_VIEW_NAME || ' が正常に作成されました。SQL: ' || :create_view_sql;
    EXCEPTION
        WHEN OTHER THEN
            RETURN 'エラー: ' || SQLERRM || ' -- 生成されたSQL: ' || SUBSTRING(:create_view_sql, 1, 2000);
    END;
    
END;
$$;

-- ================================================================================
-- 使用例
-- ================================================================================

/*
-- 基本的な使用方法
CALL GENERATE_SEMANTIC_VIEW(
    '<ソースデータベース>',
    '<ソーススキーマ>',
    '<ソーステーブル>',
    '<ターゲットデータベース>',
    '<ターゲットスキーマ>',
    '<セマンティックビュー名>',
    '<AI_COMPLETE関数のLLMモデル名>'
);

-- 作成されたセマンティックビューの確認
DESCRIBE SEMANTIC VIEW <ターゲットデータベース>.<ターゲットスキーマ>.<セマンティックビュー名>;
*/

使い方

前提条件

このストアドプロシージャーを使用するには、以下が必要です:

  • Snowflake アカウント
  • Cortex LLM が利用可能な環境 (クロスリージョン推論により、ほとんどのリージョンで利用可能)
  • セマンティックビューを作成する権限

基本的な使用例

以下は、SALES_DATABASE.PUBLIC.ORDERS テーブルからセマンティックビューを生成する例です:

-- ストアドプロシージャーの呼び出し
CALL GENERATE_SEMANTIC_VIEW(
    'SALES_DATABASE',           -- ソースデータベース
    'PUBLIC',                   -- ソーススキーマ
    'ORDERS',                   -- ソーステーブル
    'ANALYTICS_DATABASE',       -- ターゲットデータベース
    'SEMANTIC',                 -- ターゲットスキーマ
    'ORDERS_SEMANTIC_VIEW',     -- セマンティックビュー名
    'claude-sonnet-4-5'         -- LLMモデル (省略可能)
);

-- 作成されたセマンティックビューの確認
DESCRIBE SEMANTIC VIEW ANALYTICS_DATABASE.SEMANTIC.ORDERS_SEMANTIC_VIEW;

生成されるセマンティックビューの例

例えば、以下のようなテーブル構造の場合:

-- サンプルテーブル
CREATE TABLE ORDERS (
    ORDER_ID NUMBER,
    CUSTOMER_ID NUMBER,
    ORDER_DATE DATE,
    PRODUCT_NAME VARCHAR,
    QUANTITY NUMBER,
    UNIT_PRICE NUMBER,
    TOTAL_AMOUNT NUMBER
);

ストアドプロシージャーは以下のようなセマンティックビューを自動生成します:

CREATE OR REPLACE SEMANTIC VIEW ANALYTICS_DATABASE.SEMANTIC.ORDERS_SEMANTIC_VIEW
  TABLES (
    ORDERS AS SALES_DATABASE.PUBLIC.ORDERS
      WITH SYNONYMS ('注文テーブル', '売上データ', 'オーダー情報', '購買履歴')
      COMMENT = '顧客の注文情報を管理するテーブル'
  )
  FACTS (
    ORDERS.quantity AS QUANTITY
      WITH SYNONYMS ('数量', '購入数', '注文数量')
      COMMENT = '注文された商品の数量',
    ORDERS.unit_price AS UNIT_PRICE
      WITH SYNONYMS ('単価', '商品単価', '販売価格')
      COMMENT = '商品1個あたりの販売価格',
    ORDERS.total_amount AS TOTAL_AMOUNT
      WITH SYNONYMS ('合計金額', '総額', '注文金額')
      COMMENT = '注文の合計金額'
  )
  DIMENSIONS (
    ORDERS.order_id AS ORDER_ID
      WITH SYNONYMS ('注文ID', 'オーダー番号', '注文番号')
      COMMENT = '注文を一意に識別するID',
    ORDERS.customer_id AS CUSTOMER_ID
      WITH SYNONYMS ('顧客ID', 'お客様番号', '会員番号')
      COMMENT = '顧客を識別するID',
    ORDERS.order_date AS ORDER_DATE
      WITH SYNONYMS ('注文日', '購入日', 'オーダー日付')
      COMMENT = '注文が行われた日付',
    ORDERS.product_name AS PRODUCT_NAME
      WITH SYNONYMS ('商品名', '製品名', 'プロダクト名')
      COMMENT = '注文された商品の名称'
  )
  METRICS (
    ORDERS.total_sales AS SUM(TOTAL_AMOUNT)
      WITH SYNONYMS ('総売上', '売上合計', '販売額')
      COMMENT = '全注文の合計売上金額',
    ORDERS.avg_order_amount AS AVG(TOTAL_AMOUNT)
      WITH SYNONYMS ('平均注文額', '平均売上', 'AOV')
      COMMENT = '1注文あたりの平均金額',
    ORDERS.total_orders AS COUNT(*)
      WITH SYNONYMS ('注文件数', '注文数', 'オーダー数')
      COMMENT = '全体の注文件数'
  )
  COMMENT = '注文データの分析用セマンティックビュー';

実際の活用シーン

シーン1: スタートダッシュ

新しいプロジェクトで Cortex Analyst を導入する際、まずはこのストアドプロシージャーで主要なテーブルのセマンティックビューを次々に生成します。その後、ビジネス要件に応じて必要な部分だけをカスタマイズしたり、テーブル間のリレーションシップを追加することで、ゼロから作成するよりも数倍速く セマンティックレイヤを整備できます。

シーン2: データカタログとしての活用

生成されたセマンティックビューは、豊富なシノニムとコメントを含んでいるため、テーブルのドキュメント としても活用できます。新しいチームメンバーがテーブル構造を理解する際の参考資料として活用したり、AI Agentなどに読み込ませて、AI 向けのデータカタログとして活用することも可能です。

シーン3: PoC (概念実証) での活用

Cortex Analyst の効果を検証する PoC では、セマンティックレイヤの作成に時間をかけたくないケースが多いです。このストアドプロシージャーを使えば、数分でデモ環境を構築 し、すぐに Cortex Analyst の価値を体感できます。

カスタマイズのポイント

自動生成されたセマンティックビューは、そのまま使える場合もありますが、以下のポイントでカスタマイズすることで、より精度の高いクエリの生成を実現できます:

1. シノニムの追加・修正

業界特有の用語や社内用語を追加することで、Cortex Analyst がユーザーの自然言語をより正確に理解できるようになります。

-- 例:業界用語を追加
ALTER SEMANTIC VIEW ORDERS_SEMANTIC_VIEW 
MODIFY DIMENSION ORDERS.product_name 
  ADD SYNONYMS ('SKU', 'アイテムコード', 'JAN');

2. 複雑な計算メトリクスの追加

ビジネスロジックに応じた高度な計算式を追加します。

-- 例:利益率を追加
ALTER SEMANTIC VIEW ORDERS_SEMANTIC_VIEW 
ADD METRIC ORDERS.profit_margin AS (SUM(TOTAL_AMOUNT) - SUM(COST)) / SUM(TOTAL_AMOUNT)
  WITH SYNONYMS ('利益率', 'マージン', '収益率')
  COMMENT = '売上に対する利益の割合';

3. 複数テーブルのセマンティックビューへの統合

複数のテーブルを扱う分析を実現したい場合は、個別に生成したセマンティックビューを統合し、テーブル間のリレーションシップを定義します。

-- 例:ORDERS と CUSTOMERS の2つのテーブルを含むセマンティックビューを作成
-- まず、それぞれのテーブルで個別にセマンティックビューを生成した後、
-- 新しいセマンティックビューで統合

CREATE OR REPLACE SEMANTIC VIEW SALES_ANALYSIS_VIEW
  TABLES (
    ORDERS AS SALES_DATABASE.PUBLIC.ORDERS
      WITH SYNONYMS ('注文', '売上データ'),
    CUSTOMERS AS SALES_DATABASE.PUBLIC.CUSTOMERS
      WITH SYNONYMS ('顧客', 'お客様情報')
  )
  RELATIONSHIPS (
    ORDERS.CUSTOMER_ID = CUSTOMERS.CUSTOMER_ID
  )
  -- Facts、Dimensions、Metrics は省略
  ;

詳細なカスタマイズ方法については、Snowflake 公式ドキュメント - Using SQL commands to create and manage semantic views をご参照ください。

Cortex Analyst との連携

生成したセマンティックビューは、Cortex Analyst ですぐに利用できます。

Snowsight での動作確認

セマンティックビューを作成したら、Snowsight の AI/ML Studio にある Cortex Analyst のプレイグラウンド から、すぐに動作を確認できます。また実装においては、Snowflake Intelligence から呼び出す、Cortex Agents から呼び出す、Snowflake MCP Server にツールとして設定するなど様々な実装方法を Snowflake では提供しております。

注意事項

ツールの制約

このストアドプロシージャーには以下の制約があります:

  • 単一テーブルのみ対応: 本ツールは1つのテーブルからのみセマンティックビューを生成します。複数のテーブルを結合したセマンティックビューを作成したい場合は、まず個別にセマンティックビューを生成し、その後手動でテーブル間のリレーションシップを追加してください

生成されるセマンティックビューの品質

AI による自動生成のため、以下の点にご注意ください:

  • 完璧ではない: 生成されたセマンティックビューは、ビジネス要件に応じて必ずレビュー・カスタマイズしてください
  • サンプルデータへの依存: サンプルデータの内容によって、生成されるシノニムや説明が変わります
  • 複雑なロジック: 高度なビジネスロジックは、手動で追加・修正が必要です

最後に

今回ご紹介した AI 自動生成ストアドプロシージャーは、セマンティックビュー作成の初期段階を大幅に加速 するツールです。Cortex Analyst が実現する「自然言語でのデータ分析」という理想の世界に到達するためには、セマンティックレイヤの整備が不可欠ですが、この作業が障壁となってスタートが遅れてしまうのは非常にもったいないと考えます。

このストアドプロシージャーを使えば、数秒でベースとなるセマンティックビューを生成し、そこから必要な部分をカスタマイズしていくアプローチが可能になります。結果として、より短い期間でビジネス部門への分析環境を整えて届ける ことができるのではないでしょうか。

データの民主化を実現し、ビジネスユーザーが自らデータから洞察を得られる世界への第一歩を、ぜひこのツールを活用して踏み出していただければ幸いです!

宣伝

SNOWFLAKE DISCOVER でバーチャルハンズオンをデリバリしました!

2025/7/8-9に開催されました Snowflake のエンジニア向け大規模ウェビナー『SNOWFLAKE DISCOVER 第2弾』において『Snowflake Cortex AI で実現する次世代の VoC (顧客の声) 分析』という実践的なバーチャルハンズオンをデリバリさせていただきました。多くの業種で関連する顧客の声を Snowflake の最新機能を用いて分析する方法を体感いただけますので、是非非構造化データの分析のヒントを得たい方はご視聴いただければ幸いです!

以下リンクでご登録いただけるとオンデマンドですぐにご視聴いただくことが可能です。


SNOWFLAKE DISCOVER で登壇しました!

2025/4/24-25に開催されました Snowflake のエンジニア向け大規模ウェビナー『SNOWFLAKE DISCOVER』において『ゼロから始めるSnowflake:モダンなデータ&AIプラットフォームの構築』という一番最初のセッションで登壇しました。Snowflake の概要から最新状況まで可能な限り分かりやすく説明しておりますので是非キャッチアップにご活用いただければ嬉しいです!

以下リンクでご登録いただけるとオンデマンドですぐにご視聴いただくことが可能です。

生成AI Conf 様の Webinar で登壇しました!

『生成AI時代を支えるプラットフォーム』というテーマの Webinar で NVIDIA 様、古巣の AWS 様と共に Snowflake 社員としてデータ*AI をテーマに LTをしました!以下が動画アーカイブとなりますので是非ご視聴いただければ幸いです!

https://www.youtube.com/live/no9WYeLFNaI?si=2r0TVWLkv1F5d4Gs

X で Snowflake の What's new の配信してます

X で Snowflake の What's new の更新情報を配信しておりますので、是非お気軽にフォローしていただければ嬉しいです。

日本語版

Snowflake の What's New Bot (日本語版)
https://x.com/snow_new_jp

English Version

Snowflake What's New Bot (English Version)
https://x.com/snow_new_en

変更履歴

(20251009) 新規投稿

Discussion