概要LLMをデータ基盤につなぐとき、いちばん大事なのは何でしょうか。

モデルの精度でしょうか。 チャットUIの使いやすさでしょうか。 それとも可視化の美しさでしょうか。

どれも大切ですが、土台としてもっと重要なのは、AIに見せるためのデータ構造を分けることです。

今回のPoCで見えたベストプラクティスは、とてもシンプルでした。

  • raw:原本とPIIを保持する

  • meta/core:整形・履歴を持つ

  • mart:AIやBIに渡す指標を固定する

  • +1:AI専用の公開View層を作る

この記事では、この「3層+1」の考え方を、BigQuery × LLM 活用の観点から整理します。

なぜ「3層だけ」では足りないのか

従来の分析基盤では、ざっくり次の3層で十分なことが多くありました。

  • raw

  • core / meta

  • mart

しかし、LLMや会話型BIをつなぐと事情が変わります。

なぜなら、mart は人間の分析者向けに作られていても、AIにそのまま見せてよいとは限らないからです。

  • 列が多すぎる

  • 意味の近い指標が混在している

  • 自由記述列が残っている

  • 一部に再同定リスクがある

  • コストの高い明細粒度が混在している

そのため、mart の上にもう1枚、AI参照専用の公開面が必要になります。

資料でも、Looker / MCP / DEV は mart を直接見ず、用途別の公開Viewを参照する構成が示されていました。

3層+1の全体像

この構成は、PoCの実データ構成ともほぼ一致しています。raw にPIIがあり、secure_identity に source_customer_id ↔ person_id の対応表を置き、meta以降は person_id で分析、最終的に Looker 用と MCP 用の serving dataset を分けています。

Layer1: raw

raw は原本保管の層です。 氏名、住所、電話番号、メールアドレスのようなPIIを保持するのはここだけにします。

ポイントは、AIやBIに見せる前提で作らないことです。

raw の役割は、あくまで原本の受け皿です。 取り込み品質、欠損補完、履歴保持、監査可能性を優先します。

AIから触れさせないことが大前提です。

Layer2: meta / core

ここは整形や履歴管理の層です。 ソースの粒度差を吸収し、分析で使いやすい形に整えていきます。

PoC資料でも、meta 層には顧客ディメンションや来店ステージングのような中間整形テーブルが置かれていました。PIIはここでは扱わず、person_id や性別、年代帯、都道府県、来店情報など、分析可能な属性に寄せています。

ここでの役割は、分析の土台を整えることです。 ただし、まだAIに直接見せる層ではありません。

Layer3: mart

mart は、AIにもBIにも渡せるように、指標を固定していく層です。

資料では、kpi_daily_store、kpi_daily_treatment、kpi_daily_segment、customer_summary など、指標のまとまったテーブルが想定されています。

ここで大切なのは、LLMが誤解しにくい形にすることです。 具体的には、資料でも以下がタスクとして整理されています。

  • KPI テーブルを 1〜2本に固定する

  • 粒度を日次/週次などで揃える

  • description に定義や単位を埋める

  • パーティション/クラスタでスキャン量を抑える

つまり、mart は「人間が便利に使える表」ではなく、AIが安全に誤読しにくい表に寄せていく必要があります。

+1: AI/BI serving

ここが、AI時代に追加すべきレイヤです。

資料では、looker_serving、mcp_serving_bi、mcp_serving_dev のように、用途別の公開View層が切られていました。BI用とDEV用でdatasetを分ける構成まで含まれています。

この層の役割は明確です。

  • AIに見せてよい列だけを出す

  • AIに見せてよい行だけを出す

  • 用途別に公開面を変える

  • mart直結を避ける

  • コスト爆発しにくい集計面を作る

言い換えると、AI用のDMZ です。

この1層を置くだけで、会話型分析の安全性と運用性が大きく上がります。

擬似ID設計がカギになる

3層+1を成立させるうえで、最重要の技術要素のひとつが擬似IDです。

資料では基本ルールとして、

  • AI参照領域には PII を入れない

  • 結合キーは person_id に統一

  • source 側のIDはAI参照領域から排除

  • 再同定時のみ隔離領域の対応表を使う

という整理でした。さらに、person_id の作り方として、UUID方式と HMAC による決定的ID方式が整理されています。

これは、AIに「考えさせる自由」を与えながらも、本人特定に近い経路を断つための重要な設計です。

3層+1があると何が変わるか

1. 会話型分析を安全に始めやすい

AIに raw や id_map を見せなくてよいので、PoCのハードルが下がります。 実際にPoCでも、MCPからは公開Viewだけを参照し、自然言語 → SQL → 結果表 → グラフまで動作確認ができています。

2. Looker と MCP を両立しやすい

同じ mart を土台にしつつ、Looker用とMCP用で公開面を分けられます。 PoCでも、Looker と MCP の両方で同等集計を返せることが確認されていました。

3. 運用ガードレールを置きやすい

AI参照先を 1 dataset に絞れるので、IAM、監査、bytes上限、返却上限などをまとめて考えやすくなります。資料でも、PIIなし前提のガードレールとして、参照先限定、ログ保存、上限制御が整理されています。

BigQueryで実際に何を整備すべきか

3層+1を作るうえで、BigQuery側の実務タスクは次の通りです。

  • raw のPII列を棚卸しする

  • source ID と person_id の変換方式を決める

  • meta/core で person_id ベースの整形に寄せる

  • mart のKPIテーブルを固定する

  • mcp_serving / looker_serving の View を作る

  • 列説明、単位、定義を埋める

  • 監査ログとコスト制御を整える

資料の工数感では、共通のデータ基盤整備だけでもおおむね 9〜25 人日規模です。

つまり、3層+1は「構成図をきれいにする話」ではなく、AI活用を本番に持ち込むための現実的な整備項目です。

どこから始めるべきか

最初から全部やる必要はありません。 小さく始めるなら、次の順がよいと思います。

  • まずは mart を 1〜2本に固定する

  • 次に mcp_serving_bi のようなAI参照Viewを作る

  • person_id と id_map を分離する

  • Claude Code や Looker Studio Pro でPoCする

  • 本番化時に自社UIやMCP運用を拡張する

資料でも、Looker×Gemini、Claude×MCP、自社UI×MCP の3案が示されており、小さく始めて段階的に運用へ広げる考え方が取られていました。

まとめ

AI対応型データ基盤では、従来の3層構造だけでは足りません。

raw、meta、mart に加えて、 AI/BIに見せるための公開View層を置く。

この「3層+1」があることで、

  • PIIを隔離できる

  • 擬似IDで安全に分析できる

  • 会話型分析を始めやすい

  • Looker と MCP を両立できる

  • 運用ガードレールを置きやすい

というメリットが得られます。

LLM時代のデータ基盤は、ただ賢いAIをつなぐ基盤ではありません。 AIが安全に触れられる面を設計する基盤です。

BigQuery でLLM活用を進めるなら、まずは3層+1で考えてみるのがおすすめです。