Snowflake Cortex Analyst入門|自然言語からSQLを自動生成しよう

Snowflake Cortex Analyst入門|自然言語からSQLを自動生成しようのサムネイル Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket

はじめに:SQLが書けなくてもデータ分析できる時代へ

「先月の売上が一番多かった商品って何?」——こんな質問を上司にされたとき、SQLが得意な人ならSELECT … GROUP BY … ORDER BY …とサッと書けますが、初心者には少し勇気が必要ですよね。そんな悩みを解決してくれるのが、Snowflakeの新しい機能 Snowflake Cortex Analyst です。

Cortex Analystは、自然言語(日本語や英語)で質問するだけで、対応するSQLを自動生成して結果を返してくれる「Text-to-SQL」機能です。BIツールに触ったことがない人でも、チャット感覚でデータを引き出せるようになります。この記事では、その仕組みと使い方を解説していきます。

Cortex Analystって何者?

Cortex Analystは、Snowflakeが提供する生成AIサービス「Cortex」ファミリーの一機能です。仕組みをざっくり言うと、こうなります。

  1. ユーザーが日本語/英語で質問を投げる
  2. 裏側のLLM(大規模言語モデル)が質問を解釈する
  3. SnowflakeのテーブルにあったSQLを生成する
  4. SQLを実行して結果を返す

Cortexシリーズ全体の概要は Snowflake Cortexとは?生成AI機能の全体像と料金をやさしく解説 でまとめているので、合わせて読むと理解が深まります。

他のCortex機能との違い

同じCortexでも役割が違います。たとえば COMPLETE関数 は汎用のLLM呼び出し、Cortex Search は文書検索が得意です。一方Cortex Analystは「構造化データに対する質問応答」に特化しているのが特徴ですね。

キモは「セマンティックモデル」

Cortex Analystを使う上で外せないのが セマンティックモデル(Semantic Model)です。これはYAML形式で書く「データの説明書」みたいなもので、テーブルのカラムが業務的に何を意味するのかをLLMに教えてあげる役割を持ちます。

たとえば「amtカラムは売上金額(円)」「cust_idは顧客ID」のように定義しておくと、LLMはそれを読んで適切なSQLを生成してくれます。これがないと「売上って何のカラム?」とAIが迷子になってしまいます。

name: sales_model
tables:
  - name: sales
    description: 日次の売上トランザクション
    base_table:
      database: ANALYTICS
      schema: PUBLIC
      table: SALES
    dimensions:
      - name: product_name
        expr: PRODUCT_NAME
        description: 商品名
    measures:
      - name: total_amount
        expr: AMT
        description: 売上金額(円)
        default_aggregation: sum

使い方:REST APIで呼び出す

Cortex Analystは現在、REST APIエンドポイントとして提供されています。Streamlit in Snowflakeなどから呼び出すのが一般的です。リクエストの例はこんな感じです。

POST /api/v2/cortex/analyst/message
{
  "messages": [
    {
      "role": "user",
      "content": [{"type": "text", "text": "先月の売上トップ3商品を教えて"}]
    }
  ],
  "semantic_model_file": "@MY_STAGE/sales_model.yaml"
}

レスポンスには、生成されたSQL文と説明文が返ってきます。アプリ側でそのSQLを実行すれば結果テーブルが得られる、という流れです。

Snowsightからの利用

SnowsightのAI/ML機能メニューからもセマンティックモデルのアップロードやテストができます。最初は画面上で動作確認 → 慣れたらAPI連携、という順がおすすめです。

ユースケースと注意点

  • 社内BIチャットボット:Slackから「今日の新規ユーザー数は?」と聞けるツールが作れます
  • ノンエンジニア向けセルフBI:営業や経営層が自分でデータを引ける環境を作れます
  • SQL学習補助:生成されたSQLを読むことでSQLの書き方も学べます

注意点としては、セマンティックモデルの品質がそのまま回答精度に直結することです。カラム説明をサボると的外れなSQLが返ってきます。また、Cortex AnalystはトークンベースのCortex課金が発生するため、コスト管理も意識しておきましょう。

まとめ

Snowflake Cortex Analystは、自然言語からSQLを生成する「データ民主化」の決定打になりうる機能です。ポイントは次の3つです。

  • 日本語で質問するだけでSQLが返ってくる Text-to-SQL 機能
  • セマンティックモデル(YAML)が精度のカギ
  • REST API経由でアプリ組み込みが可能

まずは小さなテーブルでセマンティックモデルを作って試してみてくださいね。きっと「これは便利!」となるはずです。

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket