コンテンツにスキップ

DQL データクエリ



POST /api/v1/df/query_data_v1

概要

DQL データクエリ

Body リクエストパラメータ

パラメータ名 型 必須 説明
queries array マルチコマンドクエリ。内容は query オブジェクトのリストです。業務呼び出しでは少なくとも 1 つの query を渡す必要があります。現時点では空配列や省略にも互換性があり、空データを返します
空を許可: False
fieldTagDescNeeded boolean field または tag の説明情報が必要かどうか。デフォルトは false です
空を許可: False

パラメータ補足説明

クエリ説明


本 API は POST と GET の両方をサポートしており、両方式とも同じ JSON オブジェクトのパラメータ構造を使用します:

  • POST:完全なパラメータを application/json リクエストボディとして渡します。
  • GET:HTTP エンティティボディは使用せず、クエリ文字列の body=<完全な JSON オブジェクト文字列> で渡します。クライアントは body パラメータを URL エンコードする必要があります。
  • トップレベルは JSON オブジェクトである必要があり、二重 JSON エンコードされた string、array、null、number、boolean は受け付けません。

レスポンスの content.data[i].warnings[] には DQLDataAccessScopeRestricted が含まれる場合があります:

  • details[0].metadata.namespace は現行バージョンでは logging に固定されています。
  • details[0].metadata.restriction=partial は、権限のあるログインデックスのデータのみを返すことを示します。
  • details[0].metadata.restriction=all は、関連するログインデックスにいずれもデータアクセス権限がなく、空の結果を返すことを示します。
  • HTTP ステータスコードは引き続き 200 で、warning は GuanceDB/Kodo の既存の warning と共存します。

オプションパラメータのデフォルト値は、「呼び出し側がそのパラメータを省略した場合」の動作を示します:

  • query.timeRange を指定しない場合、Studio は下流に time_range: [] を渡し、Studio 側で固定の時間ウィンドウを補完したり、DQL 文内の時間範囲を上書きしたりしません。現在の通常の DQL Select メインルートは GuanceDB v1.52.0 がフォールバックとして直近 30 分をクエリします。この値は下流の実装に属し、すべての qtype やすべてのストレージエンジンに共通する OpenAPI のデフォルト値ではありません。PromQL クエリでは 2 つの時点を明示的に指定する必要があります。バージョン間・エンジン間で一貫した動作を保証するには、[startTimeMs, endTimeMs] の 2 つのミリ秒タイムスタンプを明示的に渡すことを推奨します。
  • query.limit、query.slimit、並び替え、最大ポイント数、クエリ時間の上限は、DQL 文・下流サービスの設定・ストレージエンジンの影響を受け、統一された OpenAPI の固定デフォルト数値はありません。呼び出し側が安定した境界を必要とする場合は、明示的に渡してください。

ワークスペース間/サイト間クエリの制約:

  • 1 つのリクエスト内のすべての queries[*] は、同じ targetRegion のみを指すことができます。複数のサイトをクエリする必要がある場合は、サイトごとにリクエストを分割し、クライアント側で結果をマージしてください。
  • 空でない workspaceUUIDs は workspaceUUID より優先されます。workspaceUUIDs が空配列または null の場合は workspaceUUID にフォールバックします。両方のフィールドを同時に渡すことは推奨しません。現在のワークスペースをクエリする場合は両方省略できます。許可ワークスペースを明示的にクエリする場合は、その許可ワークスペースが属する targetRegion も同時に渡すことを推奨します。
  • workspaceUUIDs=["*"] の場合、デフォルト値のないパラメータは targetRegion です。すべての許可ワークスペースをクエリする場合は targetRegion を明示的に渡す必要があります。互換性のある書き方 workspaceUUID="*" は引き続きサポートされ、同じルールに従います。
  • ターゲットのワークスペースと targetRegion は /api/v1/wksp_share/granted_ws_list から取得してください。完全な例は OpenAPI サイト間データクエリ を参照してください。

1、 パラメータ説明

パラメータ名 型 必須 デフォルト値 / 省略時の動作 説明
queries array [](空データを返す) マルチコマンドクエリ。内容は query オブジェクトのリストです。業務クエリでは少なくとも 1 つの query を渡す必要があります
fieldTagDescNeeded boolean false field または tag の説明情報が必要かどうか

2、 queries[*] メンバーパラメータの構造説明

パラメータ名 型 必須 デフォルト値 / 省略時の動作 説明
qtype string dql クエリ文のタイプ
dql: DQL タイプのクエリ文を示します。
promql: PromQL タイプのクエリ文を示します
query json Y - 有効なクエリに必須です。欠落している場合や query.q が空の場合は、有効な下流クエリが形成されません
query.q string 空文字列(通常は有効なクエリが形成されません) qtype タイプと一致するクエリ文。例: DQL または PromQL クエリ文
query.ignore_cache boolean false キャッシュを無効にするかどうか。false はキャッシュを使用することを示します
query.promqlType enum rangeQuery qtype=promql の場合に有効です。指定可能な値は instantQuery、rangeQuery です
query.highlight boolean false ハイライトデータを表示するかどうか
query.timeRange array [] 外部の時間範囲。DQL で指定しない場合は文内のウィンドウを上書きせず、現在の通常の Select メインルートは GuanceDB が直近 30 分をフォールバックします。PromQL では 2 つの時点を明示的に渡す必要があり、他のエンジンでは動作が異なる場合があります。DQL / PromQL の開始・終了時刻は同じ単位(秒、ミリ秒、マイクロ秒、ナノ秒)を使用する必要があり、混在した場合は HTTP 400 ft.TimeRangeUnitMismatch が返されます。ページネーションカーソルは独立して保持されます
query.disableMultipleField bool true 単一列モードを有効にするかどうか
query.showLabel bool false オブジェクトの labels を表示するかどうか
query.funcList array [] DQL の戻り値を再集計して修飾します。disableMultipleField=false の場合、このパラメータは無効です
query.slimit integer DQL / 下流設定で決定 時系列グループのサイズ。メトリクスクエリにのみ有効です
query.soffset integer DQL 内の値。DQL でも未設定の場合は追加のオフセットなし 時系列グループのオフセット。現在のパーサーは正数の外部値のみを使用して DQL で未設定のオフセットを補完し、0 は DQL の既存値をクリアしません
query.limit integer DQL / 下流設定で決定 ページネーションサイズ
query.offset integer DQL 内の値。DQL でも未設定の場合は追加のオフセットなし ページネーションオフセット。現在のパーサーは正数の外部値のみを使用して DQL で未設定のオフセットを補完し、0 は DQL の既存値をクリアしません
query.orderby array DQL / クエリエンジンで決定 並び替えリスト。構造は {fieldName: method} です。メジャーメントクエリでは fieldName=time のみをサポートし、method には desc、asc を指定できます
query.sorderby array DQL / クエリエンジンで決定 並び替えリスト。column は単一の値を返す集計関数(min、max、last、avg、p90、p95、count など)をサポートします
query.order_by array DQL / クエリエンジンで決定 Doris エンジン互換の並び替えリスト。構造は [{"column": "field", "order": "DESC"}] です
query.sorder_by array DQL / クエリエンジンで決定 Doris エンジン互換の時系列並び替えリスト。構造は [{"column": "field", "order": "DESC"}] です
query.density string DQL / クエリエンジンで決定 レスポンスポイントの密度。DQL 文内の制御パラメータより優先されます
query.interval number DQL / クエリエンジンで決定 時間スライスの間隔。Kodo の int64 範囲に変換可能で 1ms 以上の整数のみ受け付けます。単位は interval_unit で指定します
query.interval_unit string s interval の単位。s、ms を指定できます
query.align_time boolean false クエリエンジンの時間グリッドに合わせて時間スライスを整列するかどうか
query.tz string Asia/Shanghai クエリのタイムゾーン
query.search_after array ページネーションマーカーを設定しない ディープページネーションパラメータ。次のリクエストでは、前回のレスポンスの search_after を渡す必要があります
query.maxPointCount integer DQL / クエリエンジンで決定 最大ポイント数
query.workspaceUUID string 現在のワークスペース クエリ対象の単一の許可ワークスペース UUID。* は targetRegion 内のすべての許可済みワークスペースをクエリすることを示します
query.workspaceUUIDs array 設定しない クエリ対象の許可ワークスペース UUID のリスト。空でない場合は query.workspaceUUID より優先されます。同じリスト内の UUID は同じサイトに属している必要があります。["*"] は targetRegion 内のすべての許可済みワークスペースをクエリすることを示します。両方のフィールドを同時に渡すことは推奨しません
query.targetRegion string 現在のワークスペースクエリでは現在のサイトを暗黙的に使用。すべての許可ワークスペースをクエリする場合はデフォルト値なし 許可ワークスペースが属するサイトの regionCode。/wksp_share/granted_ws_list 内で対象の workspaceUUID と同じグループの regionCode から取得します。明示的なサイト間クエリでは渡すことを推奨し、すべての許可済みワークスペースをクエリする場合は明示的に渡す必要があります。互換性のある書き方 workspaceUUID="*" も同じルールに従います
query.output_format string 既存の JSON レスポンス形式 lineprotocol に設定するとラインプロトコルを返します
query.cursor_time integer カーソルを設定しない 最初のセグメントクエリでは end_time に設定します。以降はレスポンス内の next_cursor_time を渡します
query.cursor_token string トークンを設定しない ページネーション時は前回のレスポンスの next_cursor_token を渡します。渡さない場合、同じタイムスタンプのデータがページ送り時にスキップされる可能性があります
query.disable_sampling bool false サンプリングを無効にするかどうか
query.disable_truncate bool false 返却内容の切り詰めを無効にするかどうか。false は切り詰めを許可することを示します

3、 レスポンスポイント密度 density パラメータ値の説明

指定可能な値 説明
lower やや低、60 ポイント
low 低、180 ポイント
medium 中、360 ポイント
high 高、720 ポイント
  • ポイント密度パラメータの優先順位に注意してください。最大密度は density[high] です。 * maxPointCount > interval > density > dql 文内の制御パラメータ

4、 一般的なクエリの説明

5、 リクエスト JSON 形式エラー

リクエストボディが有効な JSON でない場合、API はクエリ処理に入る前に HTTP 400 を返し、errorCode は共通エラーコード ft.RequestJsonFormatError になります。content.reason、content.line、content.column はそれぞれ JSON パースの理由、行番号、列番号を示します。レスポンスは元のリクエストボディをエコーバックしません。

{
  "code": 400,
  "content": {
    "reason": "Expecting property name enclosed in double quotes",
    "line": 22,
    "column": 17
  },
  "errorCode": "ft.RequestJsonFormatError",
  "message": "请求 JSON 格式错误",
  "success": false,
  "traceId": "TRACE-..."
}

リクエスト例

curl 'https://openapi.guance.com/api/v1/df/query_data_v1' \
-H 'Content-Type: application/json' \
-H 'DF-API-KEY: <DF-API-KEY>' \
--data-raw $'{"queries":[{"qtype":"dql","query":{"q":"M::`cpu`:(avg(`usage_idle`))","_funcList":[],"funcList":[],"maxPointCount":720,"interval":10,"align_time":true,"sorder_by":[{"column":"`#1`","order":"DESC"}],"slimit":20,"disable_sampling":false,"timeRange":[1708911106000,1708912906999],"tz":"Asia/Shanghai"}}]}' \
--compressed
curl --get '<Endpoint>/api/v1/df/query_data_v1' \
-H 'DF-API-KEY: <DF-API-KEY>' \
--data-urlencode 'body={"queries":[{"qtype":"dql","query":{"q":"M::`cpu`:(avg(`usage_idle`))"}}]}' \
--compressed

レスポンス

{
    "code": 200,
    "content": {
        "data": [
            {
                "async_id": "",
                "column_names": [
                    "avg(usage_idle)"
                ],
                "complete": false,
                "cost": "14.815745ms",
                "index_name": "",
                "index_names": "",
                "index_store_type": "",
                "interval": 10000,
                "is_running": false,
                "max_point": 181,
                "next_cursor_time": -1,
                "points": null,
                "query_parse": {
                    "fields": {
                        "avg(usage_idle)": "usage_idle"
                    },
                    "funcs": {
                        "avg(usage_idle)": [
                            "avg"
                        ]
                    },
                    "namespace": "metric",
                    "sources": {
                        "cpu": "exact"
                    }
                },
                "query_type": "example_db",
                "sample": 1,
                "scan_completed": false,
                "scan_index": "",
                "series": [
                    {
                        "columns": [
                            "time",
                            "avg(usage_idle)"
                        ],
                        "name": "cpu",
                        "units": [
                            null,
                            null
                        ],
                        "values": [
                            [
                                1708912900000,
                                75.68748278863335
                            ],
                            [
                                1708912890000,
                                80.20737341208
                            ],
                            [
                                1708912880000,
                                73.23943236630001
                            ],
                            [
                                1708912870000,
                                71.08465385756001
                            ],
                            [
                                1708912860000,
                                75.12657005472002
                            ],
                            [
                                1708912850000,
                                84.19848645072001
                            ],
                            [
                                1708912840000,
                                81.59161169702
                            ],
                            [
                                1708912830000,
                                77.14274451154
                            ]
                        ]
                    }
                ],
                "window": 10000
            }
        ],
        "declaration": {
            "b": [
                "asfawfgajfasfafgafwba",
                "asfgahjfaf"
            ],
            "business": "aaa",
            "organization": "6540c09e4243b300077a9675"
        }
    },
    "errorCode": "",
    "message": "",
    "success": true,
    "traceId": "10888927517520616916"
}

フィードバック

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