当社のengineがウェアハウスのパスワードを目にすることはありません
datahashi

02エージェントとAPI

Metricを頼むだけ。SQLは私たちが書く。

Metric名、ディメンション、フィルタをRESTまたはMCPで送ります。返ってくる行は、ほかのどのツールとも一致します。

リクエスト · semantic-query.json
{
  "metrics": ["avg_order_value"],
  "dimensions": [
    "Customer.region",
    { "name": "ordered_at",
      "entity": "Order",
      "grain": "month" }
  ],
  "filters": [
    { "dimension": "status",
      "entity": "Order",
      "op": "eq",
      "value": "completed" }
  ],
  "limit": 100
}
生成されたSQL
SELECT c.region,
  date_trunc('month', o.ordered_at)
    AS ordered_at,
  SUM(o.amount) / COUNT(o.id)
    AS avg_order_value
FROM public.orders o
JOIN public.customers c
  ON o.customer_id = c.id
WHERE o.status = 'completed'
GROUP BY 1, 2
LIMIT 100;
結果 · サンプル値
regionordered_atavg_order_value
EMEA2026-01-01118.40
EMEA2026-02-01121.05
NA2026-01-01132.90
NA2026-02-01130.15

ひとつのリクエスト、それが変換されるSQL、そして返ってくる行。

問い合わせる側

エージェントもアプリもBIも、同じリクエスト

誰が問い合わせても、JSONの形はひとつ。エージェントには、選ぶためのカタログも渡ります。

エージェント(MCP)
OAuthでサインインし、使ってよいMetricだけを見て、名前で問い合わせます。結合を作り出したり、隠れた行を読んだりはできません。
アプリ(REST)
エンドポイントはひとつ。アプリはテーブルではなく、Metricを名前で問い合わせます。
BIとアナリスト
エージェントと同じMetric名を使うので、数字が一致します。
mcp · tools/call
{
  "name": "run_semantic_query",
  "arguments": {
    "metrics": ["revenue"],
    "dimensions": [{
      "name": "ordered_at",
      "entity": "Order",
      "grain": "quarter"
    }]
  }
}

リファレンス

入力は8フィールド、エラーは6コード

リクエストのフィールド

metrics
「avg_order_value」などの統制されたMetric名。
measures
未加工のMeasure(集計値)名。Exploreモードでのみ使用可能。
dimensions
時間バケットを含む、グルーピング対象の属性。
filters
eq、gt、in、containsなどの条件。raw SQLは不可。
order
選択したいずれかのフィールドによるソート順。
view
キュレーションされたViewに対象を限定。
limit
取得行数の上限。コスト上限も適用されます。
version
モデルのバージョンを指定。デフォルトは最新。

エラーコード

HTTPコード発生条件
400bad_request不正なリクエスト
401unauthenticatedトークンの欠落または無効
403forbiddenGovernedキーが未加工のMeasureをリクエストした場合
404not_found不明なMetricまたはdimension
429over_budgetコスト制限を超過した場合
503overloadedサービスがキャパシティ上限に達した場合

エラーの形はひとつです:{ "error": { "code", "message" } }

APIリファレンスをすべて見る →

当てにできること

同じリクエストには、同じ答え

  • 結合は自動で

    measureとdimensionを指定するだけ。結合はモデルが補います。

  • 合計が膨らまない

    1対多の結合でも、行を二重に数えません。

  • 財務と一致する平均

    平均は合計から計算します。平均の平均はとりません。

  • ウェアハウスが変わってもリクエストは同じ

    ウェアハウスを移行しても、呼び出し側は同じJSONを送り続けられます。

  • 同じ質問はスキャンを省く

    短期間の結果キャッシュが、同じ質問にウェアハウスを読まずに答えます。頻出の質問には、オプトインのRollupが同じ役割を果たします。

  • ひとつの呼び出し元が全体を遅くしない

    レート制限が、全員を待たせる代わりに、429または503をはっきり返します。

速度の数値は、ベンチマークができてから公開します。 パスワードがお客様のネットワークに留まる仕組み →

最初のリクエストを送ってみる

クエリガイドに沿って進めるか、コンソールでキーを作成してください。