콘텐츠로 이동

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 object 파라미터 구조를 사용합니다. POST는 전체 파라미터를 application/json request body에 넣고, GET은 query string에서 body=<전체 JSON object 문자열>로 전달하며 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는 하나의 쿼리 항목과 한 번의 작업에만 속하며, 세션 ID도 아니고 페이지네이션 커서도 아닙니다. 일괄 쿼리 시 content.data[i]와 queries[i]는 배열 인덱스로 대응되므로, 한 쿼리 항목의 ID를 다른 쿼리 항목에 사용할 수 없습니다. 매핑 오류를 줄이기 위해 비동기 호출은 매번 query를 하나만 제출할 것을 권장합니다.
  5. is_running=true인데 async_id가 비어 있으면 폴링할 수 없는 예외 응답으로 간주합니다. 이전 ID를 넣지 말고 traceId를 기록한 후 유한 재시도 정책에 따라 해당 논리 쿼리를 다시 시작하거나 기술 지원에 문의하세요.

증분 백오프(Incremental Backoff)를 사용하고 전체 타임아웃을 설정하여 간격 없는 폴링을 피하는 것이 좋습니다. 작업 완료 후 페이지를 넘길 때는 최종 결과에서 반환된 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"
      }
    }
  ]
}

크로스 사이트 쿼리는 "하나의 요청에서 하나의 targetRegion만 조회"라는 제한을 준수해야 합니다. 대상 워크스페이스와 사이트 코드 획득 및 전체 호출 절차는 OpenAPI 크로스 사이트 데이터 쿼리를 참조하세요.

  1. 파라미터 설명
파라미터 이름 type 필수 설명
queries array 예 다중 명령 쿼리로, query 객체로 구성된 목록입니다.
fieldTagDescNeeded boolean field 또는 tag 설명 정보가 필요한지 여부
  1. queries[*] 멤버 파라미터 구조 설명

동기 쿼리와 비교하여 각 query 항목은 async_id를 추가로 지원합니다. 이는 현재 실행 중인 작업을 폴링하는 데에만 사용됩니다.

파라미터 이름 type 필수 설명
async_id string 아니요 단일 비동기 작업 ID. 새 쿼리에서는 반드시 생략해야 합니다. 이전에 동일한 인덱스의 결과가 content.data[i].is_running=true이고 content.data[i].async_id가 비어 있지 않은 경우에만 해당 ID를 동일한 queries[i]에 다시 넣어 폴링을 계속합니다. is_running=false 이후에는 즉시 포함을 중지해야 하며, 새 쿼리나 다른 쿼리 항목에 재사용할 수 없습니다.
qtype string 예 쿼리 문 유형
dql: DQL 쿼리 문;
promql: PromQL 쿼리 문
query json 예 쿼리 구조
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, 잘림 허용을 의미합니다.
  1. 응답 포인트 밀도 density 파라미터 값 설명
선택 가능한 값 설명
lower 비교적 낮음, 60포인트
low 낮음, 180포인트
medium 중간, 360포인트
high 높음, 720포인트
  • 포인트 밀도 파라미터의 우선순위에 유의하세요. 최대 밀도 density[high] * maxPointCount > interval > density > dql 문의 제어 파라미터

  • 일반적인 쿼리 설명

  • 미복구 이벤트 쿼리

  • OpenAPI 크로스 사이트 데이터 쿼리 참고: openapi 인터페이스로 데이터를 조회할 때 기본값은 관리자 역할입니다. 데이터 액세스 규칙의 제한을 받을 수 있으므로 주의하세요.

요청 예시

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"
}

문서 평가

이 페이지가 도움이 되었나요?