コンテンツにスキップ

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 のライフサイクル(重要)

  1. 新しい論理クエリを開始するときは、queries[i].async_id を省略する必要があります。サーバーが非同期実行に切り替えた場合、同じ位置に content.data[i].is_running=true と空でない content.data[i].async_id を返します。
  2. is_running が厳密に true で、かつ async_id が空でない場合にのみ、その ID を使用して同じタスクをポーリングします。ポーリングリクエストでは、その項目の qtype、query、対象ワークスペース、および targetRegion を変更せず、ID を対応する queries[i].async_id に戻してください。
  3. is_running=false の場合、今回のタスクは終了しています。レスポンス構造に async_id フィールドがまだ含まれていても、呼び出し側は次の新しいクエリで古い ID を引き続き使用してはいけません。新しいクエリ、およびクエリ文/時間範囲を変更したクエリでは、いずれの場合も async_id を再度省略する必要があります。
  4. async_id は 1 つのクエリ項目と 1 回のタスクにのみ属し、セッション ID でもページネーションカーソルでもありません。バッチクエリでは、content.data[i] と queries[i] は配列のインデックスで対応します。あるクエリ項目の ID を別のクエリ項目に使用することは禁止されています。マッピングエラーを減らすため、非同期呼び出しでは一度に 1 つの query のみを送信することを推奨します。
  5. 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、よくあるクエリの説明

リクエスト例

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

レスポンス

{
    "code": 200,
    "content": {
        "data": [
            {
                "async_id": "async_task_id",
                "is_running": true
            }
        ]
    },
    "errorCode": "",
    "message": "",
    "success": true,
    "traceId": "TRACE-XXXX"
}

フィードバック

このページは役に立ちましたか?