モダンな企業は、ビジネス全体で何百万ものデータソースやシグナルを収集し、管理しています。Snowflakeでは、社内でSnowflakeを使用し、すべてのクエリ、ウェアハウス、クリックに至るまで、ビジネスシステムとプロダクトのテレメトリを大規模に監視しています。しかし、共通の理解がなければ、ペタバイト規模の生データはアクションの基盤ではなく、矛盾する回答を生み出す原因となってしまいます。
人間とAIエージェントの両方に向けてデータを大規模に活用するため、社内セマンティックレイヤーを構築・管理しています。本記事では、セマンティクスを使用してコンテキストレイヤーを構築した方法と、その過程で得られたベストプラクティスについて解説します。

図1:Snowflakeの内部環境では、セマンティックレイヤーを使用することで、すべてのエンティティが一貫性のある正確なデータをクエリできるようにしています。
ボトルネックはデータではなくコンテキスト
膨大な量の内部テレメトリは非常に強力ですが、その規模ゆえに障害発生時の対応が困難になります。たとえば、「アクティブなお客様とは何か」という一見単純な質問を考えてみましょう。この質問に対して、テーブルやメトリクスの定義が異なれば、異なる回答が返ってくる可能性があります。
login_countsテーブルでは、WHERE days_since_last_login < 30がアクティブ
customersテーブルでは、WHERE credits_consumed > 0 and account_type != ‘TRIAL’がアクティブ
customers_with_accountsテーブルでは、リージョン識別子なしのCOUNT(DISTINCT account_id)がアクティブ
通常、社内のユースケースやお客様の状況を見ると、データの意味を明確にする負担はデータサイエンスチームにのしかかっています。人間がクエリを設計し、信頼できるデータサイエンティストにそのクエリを確認してもらい、欠陥や落とし穴を指摘してもらいます。
この認識合わせの問題は、AIの導入によって指数関数的に悪化します。新しいメトリクスやデータソースが猛スピードで構築されるため、熟練したアナリストでさえも情報ギャップが生じます。Cortex Agentが報告する数値と、レガシーなダッシュボードが表示する数値が異なる場合、どちらの情報源を信頼すべきか誰にもわかりません。
すべてのAIおよびBIインターフェイスにおける単一の定義
すべてのインターフェイスにおいて、データに対する一貫した意味、つまりコンテキストが必要であり、これはセマンティックレイヤーを使用することで実現できます。セマンティックビューは、ダウンストリームのコンシューマーと生データテーブルの間に位置するトップレベルのオブジェクトであり、ガバナンスの効いたビジネス言語を物理データベーススキーマに変換します。
生テーブルをダッシュボードやAIエージェントに直接公開するのではなく、セマンティックビューによって、物理テーブルからファクト、ディメンション、メトリクスへのデータフローを標準化します。これにより、ユーザーやツールは、データをクエリする前に、そのデータが何を意味するのかについて一貫したコンテキストを得ることができます。

図2:セマンティックビューは、物理テーブル上の論理名、メトリクス、AIメタデータで構成されており、ダウンストリームでの利用を促進します。
AIエージェントがセマンティックビューを使用してデータを大規模にクエリする場合、次の2つのメリットが得られます。
実行の高速化:生データをクエリするエージェントは、複数のデータソースの検索、理解、サンプリングに時間を費やします。大規模な環境では、これらのプロセスがランタイムの大部分を占める可能性があります。代わりに、エージェントはセマンティックビューを使用して、直接SQLの実行に進むことができます。
コストの削減:エージェントがセマンティックビューでテーブルのリレーションシップや結合データを使用すると、トークン効率が大幅に向上します。マテリアライゼーションにより、セマンティックSQLは事前集計されたデータをネイティブに活用し、反復計算を削減します。
セマンティック指向のデータアーキテクチャを採用することで、スタック全体で以下のようなメリットが急速に拡大します。
精度の向上:モデルに正確なビジネスコンテキストを提供する。AtScaleのベンチマークテストでは、セマンティックコンテキストを追加することで、TPC-DSの40のビジネス上の質問において、Text-to-SQLの精度が20%から90%以上に向上した
信頼できる唯一の情報源:孤立したツール固有のセマンティクスを、単一のセマンティックレイヤーに置き換える
追加コストなしのガバナンス:セマンティックビューやメトリクスオブジェクトに対するSnowflakeのアクセス制御をネイティブに活用する
真のセルフサービス:あらゆるユーザーが自らアドホックな自然言語の質問を行えるようにサポートする
"セマンティックビューにより、私たちはデータに対する『ゴールデンレイヤー』、すなわち信頼できる単一のAPIを手に入れることができます。さらに、セマンティックビューの『マテリアライゼーション(実体化)』によって、この単一のセマンティックAPIは、クエリのパフォーマンスが極めて重要となるユースケースを含め、データを利用するすべての後続プロセス(ダウンストリーム)に対して機能するようになりました。これにより今では、ダッシュボード、AI、そしてアドホックなワークフローからのクエリを、すべて同じ信頼できるデータAPI経由で実行できるようになっています。"
Zachary Blackwood
Staff Data Scientist at Snowflake
Snowflakeの社内プロダクトデータサイエンスチームは、社内のセマンティックレイヤーを活用するエージェントを使用して、全社から寄せられるプロダクトに関する質問に対応しています。2025年7月だけでも、400人を超える社内ユーザーが、プロダクトデータサイエンスエージェントとセマンティックレイヤーを通じて5,400件以上のクエリを実行しました。また、同じ期間に、Snowflakeのすべてのチームとエージェントにわたる5,600人以上の社内従業員が、営業、人事、サポートなどの分野で広範なセマンティックレイヤーを使用して32万件以上のクエリを実行しました。

図 3:統合されたセマンティックレイヤーにより、すべてのツールとインターフェイスで、一貫してガバナンスが効いた単一のデータの意味を取得できます。
セマンティックレイヤーのベストプラクティス
セマンティックビューのバージョン管理、テスト、評価
セマンティックレイヤーは、本番環境のソフトウェアと同じ厳密さで扱う必要があります。Snowflakeのネイティブなdata build tool(dbt)統合により、メトリクスの包括的なバージョン管理、ピアレビュー、継続的インテグレーションおよび継続的デリバリー(CI/CD)の適用が可能になります。Snowflakeでは主にコードを使用してセマンティックビューを構築していますが、UIを使用してテストを行い、コードと統合する改善を提案しています。また、UIと基盤となるコードは緊密に同期されているため、ユーザーはSnowflakeのUIでのビューの構築と、リポジトリへのフィールドのコミットを簡単に切り替えることができます。
セマンティックビューを評価するには、ユーザーが実際に尋ねる質問にアクセスする必要がありました。評価のためのシグナルが高い情報源は、よく利用されるダッシュボードタイルです。これらはまさに質問に答えるために構築され、使用されています。また、よくある質問をログに記録し、評価セットを改良しています。
データエンジニアリングによるパフォーマンスの優先
セマンティックレイヤーが遅いクエリや不適切に構築されたテーブルの上にある場合、AIエージェントの動作も遅くなります。当初は、セマンティックビューに数十億件のレコードを持つ複数の生のイベントテーブルを参照させようとしました。ユーザーが質問するたびに、ビューがこれらのテーブルをクロールして結合するため、大幅なレイテンシーが発生していました。
そこで最初は、ダイナミックテーブルを使用して、事前集計された独自のスライスを構築および維持していました。各ダッシュボードには、必要なロールアップと粒度がありました。しかし、新しい質問やドメインをサポートするためにセマンティックの対象範囲を拡大するにつれて、新しいパイプラインやテーブルを手動で追加し、急速に拡大する環境を維持する必要が生じました。
セマンティックビューのマテリアライズにより、粒度の高いソーステーブル上で直接セマンティックビューをモデリングし、どのディメンションとメトリクスの組み合わせを高速化する必要があるかを宣言できるようになりました。Snowflakeはバックグラウンドでこれらのスライスをインテリジェントに維持し、応答時間の短縮に貢献します。
さらに、Snowflake CoCoの組み込みのセマンティックビュースキルはこれらのユースケース専用に構築されているため、これを使用してセマンティックおよびデータプロセスの草案作成と改良を行いました。
徹底したキュレーションとインテリジェントなルーティング
乱雑で一貫性のないセマンティックレイヤーは、メトリクスを標準化する目的を損ないます。頻繁にクエリされる主要なプロダクト領域については、(CoCoを使用して)セマンティックビューをキュレーションし、想定される特定の質問に答えられるようにしています。返された結果を含め、すべてのクエリはSnowflake内にログとして記録されます。これにより、新しいセマンティックビューと検証済みのクエリを簡単に構築し、ユーザーの質問に合わせて対象範囲を継続的に拡大できます。
インテリジェントなルーティングのために、Cortex Agentはカスタムのルーティング指示を使用してすべてのセマンティックビューを自動的にスキャンし、特定のクエリに対する適切なコンテキストを見つけます。また、データのロングテールを幅広くカバーするために、Cortex Senseを活用しています。これは、環境全体のデータを評価し、関連するデータセットへの質問のルーティングを支援します。
セマンティックレイヤーの構築を今すぐ開始
生データが質問に答えるわけではありません。コンテキストが答えるのです。セマンティックレイヤーはこの「ゴールデンレイヤー」として機能し、ビジネスロジックを一度定義するだけで、エージェント型エンタープライズ全体のすべてのダッシュボード、Streamlitアプリ、Cortex Agentを強化します。
わずか1つのファイルで、有用なセマンティックビューの使用を開始できます。この例ではYAMLを使用していますが、SQLを使用してセマンティックビューを定義することもサポートされています。
name: account_activity_model
tables:
- name: daily_account_usage
base_table:
database: core
schema: metrics
table: daily_account_usage
dimensions:
- name: region
expr: region
data_type: VARCHAR
description: "The geographic region of the account." # AI metadata
synonyms: ["location", "geography", "area"] # AI metadata
metrics:
- name: compute_spend
expr: SUM(credits_used)
description: "The total number of Snowflake credits consumed." # AI metadata
synonyms: ["cost", "spend", "credits used", "usage"] # AI metadata
verified_queries: # AI metadata
- name: total_spend
question: "What is the total compute spend?"
use_as_onboarding_question: true
sql: |
SELECT
SUM(credits_used) AS compute_spend
FROM core.metrics.daily_account_usage
ORDER BY compute_spend DESC
これで、基盤となる結合や生の列名を気にする必要なく、標準SQLを使用してセマンティックビューに直接クエリを実行できるようになります。
SELECT
region,
AGG(compute_spend) as compute_spend
FROM account_activity_model
GROUP BY region
ORDER BY compute_spend DESC;
パフォーマンスを向上させるために、このセマンティックビューをマテリアライズして、ディメンション(region)全体でメトリクス(compute_spend)を事前集計することもできます。
ALTER SEMANTIC VIEW account_activity_model SET MAX_STALENESS = '1 hour';
ALTER SEMANTIC VIEW account_activity_model
ADD MATERIALIZATION spend_by_region
WAREHOUSE = semantic_wh
AS
DIMENSIONS
region
METRICS
compute_spend;
Snowflakeのセマンティックビューは、Apache Ossie™ (incubating)との相互運用性も備えています。Ossieは、セマンティックおよびビジネスコンテキストモデル向けの、ベンダー中立なオープンスタンダードです。これにより、任意のツールやプラットフォームでセマンティクスを使用できるようになります。セマンティックモデルが別の場所に保存されている場合でも、1回の関数呼び出しでいつでもSnowflakeに読み込むことができます。
SELECT SYSTEM$READ_OSSIE_YAML_FROM_SEMANTIC_VIEW('db.schema.account_activity');
セマンティクスは、AIおよびアナリティクススタック全体の共有基盤です。今すぐSnowflakeを使用して、ガバナンスが効いた単一の信頼できる情報源の構築を開始できます。本番環境でセマンティクスを活用しているお客様の実際の導入事例を紹介する次回の記事も公開予定です。

