リファレンス
ObjectQL
データ API、ビュー、レポート、AI ツールを支える構造化クエリ形式です。ObjectOS での使いどころ、いくつかの例、そして objectstack.ai にある完全な構文を紹介します。
対応エディション
完全な仕様: objectstack.ai の ObjectQL クエリ構文。このページはその要約です。ObjectOS での使いどころと、いくつかの例を示します。
ObjectQL は、データエンジンが受け取る JSON のクエリ形式です。クエリはオブジェクトを指定し、どのレコードを返すかを記述します。where フィルター、orderBy、ページ(limit、offset)、expand するリレーション、そして任意で aggregations 付きの groupBy です。すべてのクエリは要求したユーザーとして実行されるため、そのユーザーが読めるレコードとフィールドしか返しません。
ObjectOS での使いどころ
- データ API:
GET /api/v1/data/:objectはクエリ文字列のパラメーターとしてクエリを受け取ります。POST /api/v1/data/:object/queryは完全な本文を受け取り、groupByとaggregationsを受け付けるのはこちらです(REST API)。 - ビュー:ビューの
filterとsortは ObjectQL にコンパイルされます(ビュー)。 - レポート:レポートは ObjectQL にシリアライズされます。
- AI:
query_dataツールは ObjectQL の本文を生成します。
例
緊急または期限切れの未解決チケット。 フィールドの演算子は $ で始まります。$and、$or、$not がそれらを組み合わせ、{ "$cel": "…" } はサーバーがクエリ時に評価する CEL 式を埋め込みます。
{
"$and": [
{ "status": { "$eq": "open" } },
{
"$or": [
{ "priority": { "$in": ["high", "urgent"] } },
{ "due_at": { "$lt": { "$cel": "now()" } } }
]
}
]
}担当者と顧客アカウント付きのチケット。 行ごとに 1 回リクエストするのではなく、1 回のバッチで解決されます。
{
"object": "support_ticket",
"expand": ["assignee", "customer.account"],
"limit": 20
}顧客ごとの月次売上で、10,000 を超えるもの。 POST /data/order/query を使います。
{
"object": "order",
"where": { "status": { "$ne": "cancelled" } },
"groupBy": [
"customer_id",
{ "field": "created_at", "dateGranularity": "month" }
],
"aggregations": [
{ "function": "sum", "field": "amount", "alias": "total_sales" },
{ "function": "count", "alias": "order_count" }
],
"having": { "total_sales": { "$gt": 10000 } },
"orderBy": [{ "field": "total_sales", "order": "desc" }],
"limit": 25
}クエリ文字列での並べ替え: ?orderBy=-priority,created_at。優先度の降順、次に古い順です。