DQL データ非同期クエリ¶
POST /api/v1/df/asynchronous/query_data
概要¶
Body リクエストパラメータ¶
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| queries | array | マルチコマンドクエリ。内容は query オブジェクトのリストです。新しいクエリでは async_id を渡さず、ポーリング時には、実行中の対応する query 項目にのみ、サーバーが返した async_id を渡します。 空を許可: False |
|
| fieldTagDescNeeded | boolean | field または tag の説明情報が必要かどうか 空を許可: False |
パラメータ補足説明¶
クエリ説明
このインターフェースは POST と GET の両方をサポートし、両方式とも同じ JSON オブジェクトのパラメータ構造を使用します。POST は完全なパラメータを application/json リクエストボディに格納し、GET はクエリ文字列内で body=<完全な JSON オブジェクト文字列> として渡し、URL エンコードします。トップレベルでは string、array、null、number、boolean は受け付けません。
非同期クエリの最終レスポンスの content.data[i].warnings[] には DQLDataAccessScopeRestricted が含まれる場合があります。details[0].metadata.namespace は現リリースでは固定で logging です。restriction=partial は権限のあるインデックスのデータのみが返されることを示し、restriction=all は関連するログインデックスにすべて権限がなく、空の結果が返されることを示します。HTTP ステータスコードとリクエストパラメータは変わりません。
async_id のライフサイクル(重要)
- 新しい論理クエリを開始するときは、
queries[i].async_idを省略する必要があります。サーバーが非同期実行に切り替えた場合、同じ位置にcontent.data[i].is_running=trueと空でないcontent.data[i].async_idを返します。 is_runningが厳密にtrueで、かつasync_idが空でない場合にのみ、その ID を使用して同じタスクをポーリングします。ポーリングリクエストでは、その項目のqtype、query、対象ワークスペース、およびtargetRegionを変更せず、ID を対応するqueries[i].async_idに戻してください。is_running=falseの場合、今回のタスクは終了しています。レスポンス構造にasync_idフィールドがまだ含まれていても、呼び出し側は次の新しいクエリで古い ID を引き続き使用してはいけません。新しいクエリ、およびクエリ文/時間範囲を変更したクエリでは、いずれの場合もasync_idを再度省略する必要があります。async_idは 1 つのクエリ項目と 1 回のタスクにのみ属し、セッション ID でもページネーションカーソルでもありません。バッチクエリでは、content.data[i]とqueries[i]は配列のインデックスで対応します。あるクエリ項目の ID を別のクエリ項目に使用することは禁止されています。マッピングエラーを減らすため、非同期呼び出しでは一度に 1 つの query のみを送信することを推奨します。is_running=trueであるのにasync_idが空の場合、ポーリング不可の異常レスポンスとみなします。過去の ID を入れないでください。traceIdを記録し、有限回数のリトライ戦略に従ってその論理クエリを再発行するか、テクニカルサポートに連絡してください。
増分バックオフを採用し、合計タイムアウトを設定して、間隔なしのポーリングを避けることを推奨します。タスク完了後にページングが必要な場合は、最終結果で返された search_after、next_cursor_time、または next_cursor_token を使用し、async_id をページネーションパラメータの代わりに使用しないでください。
初回リクエスト(async_id を渡さない)
{
"queries": [
{
"qtype": "dql",
"query": {
"q": "L::re(`.*`):(`message`)",
"timeRange": [1772516130000, 1772519730000],
"limit": 100,
"workspaceUUIDs": ["wksp_target"],
"targetRegion": "region_code"
}
}
]
}
実行中の場合のみ同じタスクをポーリング
{
"queries": [
{
"async_id": "async_task_id_from_content_data_0",
"qtype": "dql",
"query": {
"q": "L::re(`.*`):(`message`)",
"timeRange": [1772516130000, 1772519730000],
"limit": 100,
"workspaceUUIDs": ["wksp_target"],
"targetRegion": "region_code"
}
}
]
}
クロスサイトクエリでは、「1 つのリクエストで 1 つの targetRegion のみをクエリする」という制限も守る必要があります。対象ワークスペースとサイトコードの取得方法、および完全な呼び出しフローについては、OpenAPI クロスサイトデータクエリ を参照してください。
1、パラメータ説明
| パラメータ名 | type | 必須 | 説明 |
|---|---|---|---|
| queries | array | Y | マルチコマンドクエリ。内容は query オブジェクトのリスト |
| fieldTagDescNeeded | boolean | field または tag の説明情報が必要かどうか |
2、queries[*] メンバーパラメータの構造説明
同期クエリと比較して、各 query 項目は追加で async_id をサポートします。これは現在も実行中のタスクをポーリングするためだけに使用されます。
| パラメータ名 | type | 必須 | 説明 |
|---|---|---|---|
async_id |
string | N | 単一の非同期タスク ID。新しいクエリでは省略必須。直前の同じインデックスの結果が content.data[i].is_running=true かつ content.data[i].async_id が空でない場合にのみ、その ID を同じ queries[i] に戻してポーリングを続行します。is_running=false になった後は直ちにその ID を含めないようにし、新しいクエリや他のクエリ項目への再利用を禁止します |
| qtype | string | Y | クエリ文のタイプ dql: DQL クエリ文。promql: PromQL クエリ文 |
| query | json | Y | クエリ構造 |
| query.q | string | qtype タイプと一致するクエリ文。例: dql または promql クエリ文 | |
| query.ignore_cache | boolean | キャッシュを無効にするかどうか。デフォルトは false で、キャッシュを使用することを示します |
|
| query.promqlType | enum | qtype=promql のときに有効。選択値は instantQuery、rangeQuery、デフォルトは rangeQuery |
|
| query.highlight | boolean | ハイライトデータを表示するかどうか | |
| query.timeRange | array | 時間範囲のタイムスタンプリスト。DQL / PromQL の開始・終了時刻は同じ単位(秒、ミリ秒、マイクロ秒、ナノ秒)を使用する必要があります。混在させた場合は HTTP 400 ft.TimeRangeUnitMismatch が返されます。ページネーションカーソルは独立しています |
|
| query.disableMultipleField | bool | 単一列モードを有効にするかどうか。デフォルトは true |
|
| query.showLabel | bool | オブジェクトの labels を表示するかどうか。デフォルトは false |
|
| query.funcList | array | DQL の戻り値を再度集計して修飾します。disableMultipleField=false の場合、このパラメータは無効です |
|
| query.slimit | integer | 時系列グループのサイズ。メトリクスクエリに対してのみ有効です | |
| query.soffset | integer | 時系列グループのオフセット | |
| query.limit | integer | ページサイズ | |
| query.offset | integer | ページオフセット | |
| query.orderby | array | ソートリスト。構造は {fieldName: method}。メジャーメントクエリでは fieldName=time のみサポートされ、method は desc、asc から選択できます |
|
| query.sorderby | array | ソートリスト。sorderby の column は式であり、単一の値を返すすべての集計関数 min max last avg p90 p95 count をサポートします。{fieldName:method}、構造は orderby と同じです |
|
| query.order_by | array | ソートリスト。構造は [{"column": "field", "order": "DESC"}]。doris エンジン互換フィールド | |
| query.sorder_by | array | ソートリスト。構造は [{"column": "field", "order": "DESC"}]。doris エンジン互換フィールド | |
| query.density | string | レスポンスの点密度。優先度は autoDensity より低く、dql 文で設定された密度より高い | |
| query.interval | number | 時間スライス間隔。Kodo int64 の範囲に変換可能で、1ms 以上の整数ミリ秒の正数のみ受け付けます。デフォルトの単位は秒で、interval_unit でミリ秒を指定できます | |
| query.interval_unit | string | interval の単位。選択値は s、ms、デフォルトは s |
|
| query.search_after | array | ページネーションクエリのマーカー。前回のリクエストのレスポンス結果に含まれる search_after 値を今回のリクエストのパラメータとして使用します | |
| query.maxPointCount | integer | 最大ポイント数 | |
| query.workspaceUUID | string | クエリする単一の権限付与元ワークスペース UUID。* は targetRegion 内のすべての権限付与済みスペースをクエリすることを示します |
|
| query.workspaceUUIDs | array | クエリする権限付与元ワークスペースの UUID リスト。空でない場合、query.workspaceUUID より優先されます。同じリストは必ず同じサイトに属している必要があります。["*"] は targetRegion 内のすべての権限付与済みスペースをクエリすることを示します。両方のフィールドを同時に渡すことは推奨しません |
|
| query.targetRegion | string | 権限付与元ワークスペースが属するサイトの regionCode。/wksp_share/granted_ws_list の対象 workspaceUUID と同じグループの regionCode から取得します。明示的なクロスサイトクエリでは渡すことを推奨し、* をクエリする場合は必ず渡します。ポーリング中に変更してはいけません |
|
| query.output_format | string | lineprotocol: ラインプロトコル出力。デフォルトでは未入力の場合、既存の出力形式のまま変更されません | |
| query.cursor_time | integer | 分割クエリのしきい値。最初の分割クエリでは end_time に設定し、以降はレスポンス内の next_cursor_time を渡します |
|
| query.cursor_token | string | ページネーションクエリのトークン(エンジンが返す cursor_token の値)。ページネーションクエリでは、前回のクエリで返された next_cursor_token を今回のクエリの cursor_token に設定する必要があります。cursor_token を含まないリクエストでは、ページ送り時に同じタイムスタンプのデータがスキップされる可能性があります | |
| query.disable_sampling | bool | サンプリング無効スイッチ。デフォルト値は false | |
| query.disable_truncate | bool | 返される内容の切り詰めを無効にするかどうか。デフォルトは false で、切り詰めを許可することを示します |
3、レスポンス点密度の density パラメータ値の説明
| 選択値 | 説明 |
|---|---|
| lower | 低い、60 ポイント |
| low | 低、180 ポイント |
| medium | 中、360 ポイント |
| high | 高、720 ポイント |
- 点密度パラメータの優先度に注意してください。最大密度は
density[high]です。* maxPointCount > interval > density > dql 文内の制御パラメータ
4、よくあるクエリの説明
- 未復旧イベントクエリ
- OpenAPI クロスサイトデータクエリ 注: openapi インターフェースでデータクエリを実行する場合、デフォルトで管理者(admin)ロールになります。データアクセスルールの制限を受ける可能性があることに注意してください。
リクエスト例¶
curl 'https://openapi.guance.com/api/v1/df/asynchronous/query_data' \
-H 'Content-Type: application/json' \
-H 'DF-API-KEY: <DF-API-KEY>' \
--data-raw '{"queries":[{"qtype":"dql","query":{"q":"L::re(`.*`):(`message`)","timeRange":[1772516130000,1772519730000],"limit":100}}]}' \
--compressed