Cortex Analyst に日本語で聞くと、セマンティックビューの有無で答えが変わる
前に、一番飯店の Instagram 月次レポートの集計の決まりを、Snowflake のセマンティックビューに書きました。今回は、そのセマンティックビューに Cortex Analyst(日本語の質問から SQL を作って答える Snowflake の機能)で質問してみます。
まず Snowsight(Snowflake の画面)で実際に質問し、どう答えるかを見ました。そのあと、同じ質問を「セマンティックビューを渡さない AI」にもして、答えを比べています。

画面でセマンティックビューを開く
Snowsight の左のメニューで「AI と ML」→「Cortex アナリスト」を開き、データベースとスキーマを選ぶと、作ってあるセマンティックビューが一覧に出ます。名前をクリックすると、次の確認が出ました。

セマンティックビューは、作った役(ロール)のものです。今回は作業用の役で作り、管理者の役で開いたので、「このセマンティックビューを所有していません」と注意が出ました。写しを開いて見ることはできますが、変更を反映するには持ち主の役が要ります。
「開く」を押すと、ワークスペース(Snowsight の作業場所)に設定の写し(`.sv.yaml`)ができ、中身が画面で見えるようになります。

「SQL生成」の欄には、AI への指示として書いた決まりが並んでいます。月の区切り、保存率の計算のしかた、目標の本数、2026年8月以降はデータが無いこと、などです。下には、表ごとの切り口・事実・指標(メトリック)が並びます。
プレイグラウンドで質問する
右側の「プレイグラウンド」に、日本語で質問を打ちます。最初に「2026年6月の保存率は?」と聞いたところ、次のように止まりました。

Cortex Analyst は、質問をこう読んでいます。
2026年6月の保存率を計算する。投稿ごとの保存率の平均ではなく、月全体の保存合計÷リーチ合計×100を使う。
セマンティックビューに書いた決まりどおりの読み方です。SQL もできています。ただ、その SQL を流すところで「セマンティックビューを読む権限が無い」と止まりました。開いている管理者の役に、このセマンティックビューを読む許可が無かったためです。
管理者の役に読む許可を渡しました。権限を渡す作業は、AI ではなく人が画面で流しています。
GRANT SELECT ON SEMANTIC VIEW ORDER_SYSTEM.SEMANTIC_SANDBOX.ICHIBAN_INSTAGRAM_SV TO ROLE ACCOUNTADMIN;
同じ質問をもう一度すると、答えが出ました。

0.20% は、公開している月次レポートと同じ値です。SQL は `SEMANTIC_VIEW(… METRICS monthly_save_rate …)` という形で、セマンティックビューの指標を名前で呼んでいます。計算式を組み立て直していないので、決まりから外れようがありません。
判定・データに無いこと・「先月」を聞く
目標に届いたかを聞く
「2026年5月から7月で、投稿数が目標に届かなかった月は?」と聞きました。

目標が9本であることを読み取り、判定の指標(`post_count_check`)を使って、6月(1本不足)と7月(6本不足)を返しました。どちらもレポートと同じです。
データに無いことを聞く
「2026年6月の売上はいくら?」と聞きました。このセマンティックビューには、売上のデータはありません。

SQL を作らず、「売上に関するデータは含まれていません」と答えました。代わりに聞ける質問も3つ出しています。無いものを無理に作って答えなかったのは、安心できる動きです。
「先月」と聞く
「先月の保存率は?」と聞きました。データは2026年8月11日までしか入っていません。

今日の日付から「先月」を2026年9月と読み、AI への指示に書いた「2026年8月以降はデータが無い」ことにも触れました。ただ、そのまま9月で問い合わせたので、結果は「行がありません」でした。
聞いた人が「データが無い月を聞いた」と気づけるかは、説明文を読むかどうかにかかっています。月を指定して聞くか、AI への指示に「データの最新月を答えに添える」と書いておくのがよさそうです。
セマンティックビューを渡さない AI と比べる
画面で見た答えが、セマンティックビューのおかげなのかを確かめるため、同じ質問を3通りで聞き比べました。こちらは手元のプログラムから Cortex Analyst の API と、Snowflake の中の AI(claude-sonnet-4-5)を呼んでいます。
- A:Cortex Analyst + セマンティックビュー(画面と同じ)
- B:元の表(毎日の記録が積み上がる4つの表)の列名だけを渡した AI
- C:1行が1投稿に整えた表の列名だけを渡した AI。データの下ごしらえは済んでいて、集計の決まりだけが無い
| 質問 | A | B(元の表だけ) | C(整えた表だけ) |
|---|---|---|---|
| 6月の保存率 | 正解 | 数字は合ったが、計算のしかたが違う | 日付の書き方で SQL が止まる |
| 5月のリール本数と目標 | 正解 | 目標を自分で決めて「未達」 | 日付の書き方で止まる |
| 7月の月間リーチ | 正解 | 正解の6,000倍以上 | 日付の書き方で止まる |
| 5〜7月の保存数の合計 | 正解 | 正解の40〜70倍 | SQL を作らない |
| 7月のリール平均視聴秒 | 正解 | ミリ秒のまま | 日付の書き方で止まる |
| 投稿数が目標に届かなかった月 | 正解 | 目標を30本と決めて判定 | 本数は出るが判定できない |
| 6月の売上(データに無い) | 答えない | 空の結果を返す | 「含まれていない」と返す |

B の誤りは、セマンティックビューに書いた決まりとほぼ1対1で対応していました。毎日の記録を全部足す(リーチが6,000倍以上になった)、ミリ秒を秒に直さない、表に無い目標を自分で決める、といった誤りです。
C は、データを整えた表を渡しても、目標の本数を知らないので判定ができませんでした。データの整理だけでは足りず、指標と判定の決まりを書いておくことが効いています。
一番危ないと感じたのは、B の保存率です。レポートとは違う方法で計算したのに、たまたま同じ数字が出ました。答えだけを見て「合っている」と判断すると、別の月で外れても気づけません。
同じ質問を3回聞く
AI の答えは、聞くたびに変わることがあります。A に12の質問を3回ずつ聞きました。
- 12問中10問は、3回とも同じ正しい答えだった(データに無い売上を答えなかった問いを含む)
- 「7月末のフォロワー数」は、3回中1回だけ、7月の日ごとの値を全部並べた
- 「先月の保存率」は、3回とも9月と読み、空の結果を返した
フォロワー数のように「いつ時点の値か」があいまいな問いは、答えの形が揺れました。月末の値を答える決まりを、AI への指示に足しておくのがよさそうです。
まとめ
- Snowsight のプレイグラウンドで日本語で聞くと、質問の読み方・SQL・結果が並んで出る。セマンティックビューの決まりどおりに読んでいるかを、画面で確かめられる
- 開く役に、セマンティックビューを読む許可が要る。作った役と見る役が違うときは、許可を渡すのを忘れない
- セマンティックビューを渡さない AI は、数え方・単位・目標でつまずいた。データを整えるだけでは足りず、指標と判定の決まりを書いておくことが要る

