비동기 커스텀 보고서 API 사용

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

Apigee 애널리틱스는 풍부한 대화형 대시보드, 커스텀 보고서 생성기, 관련 기능을 제공합니다. 하지만 이러한 기능은 대화형입니다. 즉, API 또는 UI 요청을 제출하면 애널리틱스 서버가 응답을 제공할 때까지 요청이 차단됩니다.

하지만 분석 요청은 완료하는 데 시간이 너무 오래 걸릴 수 있습니다. 쿼리 요청이 많은 양의 데이터(예: 100GB)를 처리해야 하는 경우 타임아웃으로 인해 작업이 실패할 수 있습니다.

비동기식 쿼리 처리를 사용하면 매우 큰 데이터 세트를 쿼리하고 나중에 결과를 검색할 수 있습니다. 양방향 쿼리가 시간 초과되면 오프라인 쿼리를 사용해 보세요. 다음은 비동기식 쿼리 처리가 좋은 대안이 될 수 있는 경우입니다.

  • 여러 시간 간격에 걸친 보고서를 분석하고 만드는 경우
  • 쿼리를 복잡하게 만드는 다양한 그룹화 측정기준과 기타 제약조건으로 데이터를 분석하는 경우
  • 일부 사용자 또는 조직에 대한 데이터 볼륨이 현저히 높아진 때 쿼리를 관리하는 경우

이 문서에서는 API를 사용하여 비동기 쿼리를 시작하는 방법에 대해 설명합니다. 커스텀 보고서 실행에 설명된 대로 UI를 사용할 수도 있습니다.

보고서 API와 UI 비교

커스텀 보고서 만들기 및 관리는 Apigee UI를 사용하여 커스텀 보고서를 만들고 실행하는 방법을 자세히 설명합니다. 이러한 보고서를 동기식 또는 비동기식으로 실행할 수 있습니다.

UI를 사용하여 커스텀 보고서를 생성하는 대부분의 개념은 API를 사용하는 데 적용됩니다. 즉, API를 사용하여 커스텀 보고서를 만들 때 Apigee에 내장된 측정항목, 측정기준, 필터를 지정합니다.

UI가 아닌 API로 생성된 보고서의 주요 차이점은 전자가 CSV 또는 JSON(줄바꿈으로 구분됨) 파일에 기록되는 반면 후자는 UI에 표시됩니다.

쿼리 시간 제한

Apigee는 비동기 쿼리 기간으로 최대 365일의 시행을 적용합니다.

비동기 분석 쿼리를 실행하는 방법

다음 세 단계로 비동기 분석 쿼리를 수행합니다.

  1. 쿼리를 제출합니다.

  2. 쿼리 상태를 가져옵니다.

  3. 쿼리 결과를 검색합니다.

1단계: 쿼리 제출

Queries API에 POST 요청을 보냅니다. 이 API는 Apigee에 백그라운드에서 요청을 처리하도록 지시합니다. 쿼리 제출이 성공하면 API는 201 상태 및 이후 단계에서 쿼리를 참조하는 데 사용할 ID를 반환합니다.

예를 들면 다음과 같습니다.

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @json-query-file

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

요청 본문은 쿼리의 JSON 설명입니다. JSON 본문에서 보고서를 정의하는 측정항목, 측정기준, 필터를 지정합니다.

다음은 json-query-file 파일의 예시입니다.

{ 
   "metrics":  [
     {
         "name": "message_count",
         "function": "sum",
         "alias": "sum_txn"
    }
        ],
    "dimensions": ["apiproxy"],
    "timeRange": "last24hours",
    "limit": 14400,
    "filter":"(message_count ge 0)"
}

요청 본문 구문에 대한 자세한 설명은 아래의 요청 본문 정보를 참조하세요.

샘플 응답:

9cfc0d85-0f30-46d6-ae6f-318d0cb961bd 쿼리 ID가 응답에 포함됩니다. HTTP 상태 201 외에도 enqueuedstate는 요청이 성공했음을 나타냅니다.

HTTP/1.1 201 Created

{  
  "self":"/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
  "created":"2018-05-10T07:11:10Z",
  "state":"enqueued",
  "error":"false",
}

2단계: 쿼리 상태 가져오기

쿼리 상태를 요청하려면 Queries API로 GET 요청을 보냅니다. POST 호출에서 반환된 쿼리 ID를 제공합니다. 예를 들면 다음과 같습니다.

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

샘플 응답:

쿼리가 아직 진행 중이면 staterunning인 다음과 같은 응답이 반환됩니다.

{
    "self": "/organizations/myorg/environments/myenv/queries/1577884c-4f48-4735-9728-5da4b05876ab",
    "state": "running",
    "created": "2018-02-23T14:07:27Z",
    "updated": "2018-02-23T14:07:54Z"
}

쿼리가 완료되면 다음과 같은 응답이 표시됩니다. 여기서 statecompleted로 설정됩니다.

{
      "self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd",
      "state": "completed",
      "result": {
        "self": "/organizations/myorg/environments/myenv/queries/9cfc0d85-0f30-46d6-ae6f-318d0cb961bd/result",
        "expires": "2017-05-22T14:56:31Z"
      },
      "resultRows": 1,
      "resultFileSize": "922KB",
      "executionTime": "11 sec",
      "created": "2018-05-10T07:11:10Z",
      "updated": "2018-05-10T07:13:22Z"
}

3단계: 쿼리 결과 검색

쿼리 상태가 completed가 되면 쿼리 결과를 검색하는 데 사용할 수 있는 방법은 두 가지입니다.

  • getResulturl(권장): 쿼리 결과를 볼 수 있는 URL을 반환하는 최신 방법입니다. 이 방법은 쿼리 결과에 크기 제한이 없습니다.
  • getResult: 쿼리 결과가 포함된 ZIP 파일을 다운로드하는 이전 방법입니다. 이 방법은 쿼리 결과에 32MB 크기 제한을 적용합니다.

아래 탭에서는 두 가지 방법 중 하나를 사용하여 쿼리 결과를 검색하는 API 호출을 보여줍니다. 위에서와 같이 쿼리 ID는 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd입니다.

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID/resulturl" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

다음은 호출에 대한 샘플 응답입니다.

{
  "urls": [
    "uri": "https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T181309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f169edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa8496def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dcc1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c20580e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b133447032ea7abedc098d2eb14a7",
  "md5": "23db6982caef9e9152f1a5b2589e6ca3",
  "sizeBytes": 1024
  ]
}

응답에는 다음 필드가 있는 urls[] 목록이 포함됩니다.

  • uri: 보고서에 대한 JSON 데이터의 서명된 URL인 문자열입니다. URL에서 보고서를 볼 수 있습니다.
  • md5: JSON 데이터의 MD5 해시입니다.
  • sizeBytes: 반환된 파일의 크기(바이트)입니다.

JSON 형식의 샘플 결과는 쿼리 결과 정보를 참조하세요.

getResult

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID/result" \
  -X GET \
  -H "Authorization: Bearer $TOKEN"

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

다운로드한 파일을 검색하려면 다운로드한 파일을 시스템에 저장하도록 사용 도구를 구성해야 합니다. 예를 들면 다음과 같습니다.

  • cURL을 사용하는 경우 위에 표시된 대로 -O -J 옵션을 사용할 수 있습니다.
  • Postman을 사용하는 경우 저장 및 다운로드 버튼을 선택해야 합니다. 이 경우 response라는 ZIP 파일이 다운로드됩니다.
  • Chrome 브라우저를 사용하는 경우 자동으로 다운로드가 허용됩니다.

요청이 성공하고 0이 아닌 결과 집합이 있으면 결과가 압축된 JSON(줄바꿈으로 구분됨) 파일로 클라이언트에 다운로드됩니다. 다운로드한 파일의 이름은 OfflineQueryResult-.zip입니다.

예를 들면 OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip 입니다.

zip 파일에는 JSON 결과의 .gz 보관 파일이 들어 있습니다. JSON 파일에 액세스하려면 다운로드 파일의 압축을 푼 다음 gzip 명령어를 사용하여 JSON 파일을 추출합니다.

unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gz

요청 본문 정보

이 섹션에서는 쿼리의 JSON 요청 본문에서 사용할 수 있는 각 매개변수를 설명합니다. 쿼리에서 사용할 수 있는 측정항목 및 측정기준에 대한 자세한 내용은 분석 참조를 확인하세요.

{  
   "metrics":[  
      {  
        "name":"metric_name",
        "function":"aggregation_function",
        "alias":"metric_display_name_in_results",
        "operator":"post_processing_operator",
        "value":"post_processing_operand"
      },
   ...
   ],
   "dimensions":[  
      "dimension_name",
      ...
   ],
   "timeRange":"time_range",
   "limit":results_limit,
   "filter":"filter",
   "groupByTimeUnit": "grouping",
   "outputFormat": "format",
   "csvDelimiter": "delimiter"
}
속성 설명 필수?
metrics

측정항목의 배열입니다. 각 측정항목이 포함된 쿼리에 측정항목을 하나 이상 지정할 수 있습니다. 측정항목 이름만 필요합니다.

  • name: (필수) 측정항목에 있는 테이블에 정의된 측정항목의 이름입니다.
  • function: (선택사항) 집계 함수는 avg, min, max 또는 sum입니다.

    일부 측정항목은 모든 집계 함수를 지원하지 않습니다. 측정항목 문서에는 측정항목 이름 및 측정항목에서 지원하는 함수(avg, min, max, sum)를 지정하는 테이블이 포함되어 있습니다.

  • alias: (선택사항) 출력의 측정항목 데이터가 포함된 속성의 이름입니다. 생략할 경우 집계 함수의 이름과 조합된 측정항목 이름이 기본값이 됩니다.
  • operator: (선택사항) 측정항목 값이 계산된 후에 측정항목에서 수행할 작업입니다. value 속성과 함께 작동합니다. 지원되는 연산자는 + - / % *입니다.
  • value: (선택사항) 지정된 operator에서 계산된 측정항목에 적용되는 값입니다.

operatorvalue 속성은 측정항목에 대해 수행되는 사후 처리 작업을 정의합니다. 예를 들어 response_processing_latency 측정항목을 지정하면 이 측정항목은 평균 응답 처리 지연 시간을 밀리초 단위로 반환합니다. 단위를 초 단위로 변환하려면 operator"/"로, value”1000.0“으로 설정합니다.

"metrics":[  
  {  
    "name":"response_processing_latency",
    "function":"avg",
    "alias":"average_response_time_in_seconds",
    "operator":"/",
    "value":"1000"
  }
]

자세한 내용은 애널리틱스 측정항목, 측정기준, 필터 참조를 참조하세요.

dimensions 측정항목을 그룹화하는 측정기준의 배열입니다. 자세한 내용은 지원되는 측정기준 목록을 참조하세요. 여러 측정기준을 지정할 수 있습니다.
timeRange 쿼리의 시간 범위입니다.

다음과 같은 사전 정의된 문자열을 사용하여 시간 범위를 지정할 수 있습니다.

  • last60minutes
  • last24hours
  • last7days

또는 timeRange를 ISO 형식으로 시작 및 종료 타임스탬프를 설명하는 구조(yyyy-mm-ddThh:mm:ssZ)로 지정할 수 있습니다. 예를 들면 다음과 같습니다.

"timeRange": {
    "start": "2018-07-29T00:13:00Z",
    "end": "2018-08-01T00:18:00Z"
}
limit 결과에서 반환될 수 있는 최대 행 수입니다. 아니요
filter 데이터를 필터링하는 데 사용할 수 있는 부울 표현식입니다. 필터 표현식은 AND/OR 용어를 사용하여 결합될 수 있으며 모호성을 피하기 위해 완전히 괄호로 묶어야 합니다. 필터링할 수 있는 필드에 대한 자세한 내용은 애널리틱스 측정항목, 측정기준, 필터 참조를 확인하세요. 필터 표현식을 작성하는 데 사용하는 토큰에 대한 자세한 내용은 필터 표현식 구문을 참조하세요. N
groupByTimeUnit 결과 집합을 그룹화하는 데 사용되는 시간 단위입니다. 유효한 값은 second, minute, hour, day, week 또는 month입니다.

쿼리에 groupByTimeUnit이 포함된 경우 결과는 지정된 시간 단위를 기반으로 하는 집계 결과이고 결과 타임스탬프에는 밀리초 정밀도를 포함하지 않습니다. 쿼리가 groupByTimeUnit을 생략한 경우 결과 타임스탬프에 밀리초 정밀도가 포함됩니다.

N
outputFormat 출력 형식이며, 유효한 값은 csv 또는 json입니다. 줄바꿈으로 구분된 JSON에 해당하는 기본값은 json입니다.

참고: csvDelimiter 속성을 사용하여 CSV 출력의 구분 기호를 구성합니다.

N
csvDelimiter outputFormatcsv로 설정된 경우 CSV 파일에 사용되는 구분 기호입니다. 기본값은 쉼표(,) 문자입니다. 지원되는 구분 기호 문자는 쉼표(,), 파이프(|), 탭(\t)입니다. N

필터 표현식 구문

이 참조 섹션에서는 요청 본문에서 필터 표현식을 작성하는 데 사용할 수 있는 토큰을 설명합니다. 예를 들어 다음 표현식에서는 'ge' 토큰(크거나 같음)을 사용합니다.

"filter":"(message_count ge 0)"
토큰 설명
in 목록에 포함
(apiproxy in 'ethorapi','weather-api')

(apiproxy in 'ethorapi')

(apiproxy in 'Search','ViewItem')

(response_status_code in 400,401,500,501)

참고: 문자열은 따옴표로 묶어야 합니다.

notin 목록에서 제외
(response_status_code notin 400,401,500,501)
eq 다음과 같음 (==)
(response_status_code eq 504)

(apiproxy eq 'non-prod')
ne 같지 않음 (!=)
(response_status_code ne 500)

(apiproxy ne 'non-prod')
gt 보다 큼 (>)
(response_status_code gt 500)
lt 보다 작음 (<)
(response_status_code lt 500)
ge 이상 (>=)
(target_response_code ge 400)
le 작거나 같음 (<=)
(target_response_code le 300)
like 문자열 패턴이 제공된 패턴과 일치하면 true를 반환합니다.

오른쪽의 예시는 다음과 같습니다.

- 'buy'라는 단어가 포함된 모든 값

- 'item'으로 끝나는 모든 값

- 'Prod'로 시작하는 모든 값

- 4로 시작하는 모든 값(response_status_code는 숫자)

(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like 문자열 패턴이 제공된 패턴과 일치하면 false를 반환합니다.
(apiproxy not like '%buy%')

(apiproxy not like '%item')

(apiproxy not like 'Prod%')
and 'and' 논리를 사용하여 두 개 이상의 필터 표현식을 포함할 수 있습니다. 필터에는 모든 조건을 충족하는 데이터가 포함됩니다.
(target_response_code gt 399) and (response_status_code ge 400)
or 'or' 논리를 사용하여 가능한 여러 필터 표현식을 평가할 수 있습니다. 필터에는 조건 중 하나 이상을 충족하는 데이터가 포함됩니다.
(response_size ge 1000) or (response_status_code eq 500)

제약조건 및 기본값

다음은 비동기식 쿼리 처리 기능에 대한 제약조건 및 기본값 목록입니다.

제약조건 기본 설명
쿼리 호출 한도 설명 참조 /queries Apigee API를 시간당 최대 7번 호출하여 비동기 보고서를 시작할 수 있습니다. 호출 할당량을 초과하면 API는 HTTP 429 응답을 반환합니다.
활성 쿼리 한도 10 조직/환경의 활성 쿼리는 최대 10개까지 가능합니다.
쿼리 실행 시간 기준 6시간 6시간보다 오래 걸리는 쿼리는 종료됩니다.
쿼리 시간 범위 설명 참조 쿼리에 허용되는 최대 시간 범위는 365일입니다.
측정기준 및 측정항목 제한 25 쿼리 페이로드에 지정할 수 있는 측정기준 및 측정항목의 최대 수입니다.

쿼리 결과 정보

다음은 JSON 형식의 예시입니다. 결과를 보는 방법은 쿼리 결과를 검색하는 데 사용한 메서드에 따라 다릅니다.

  • getResulturl 메서드를 사용하면 결과의 uri 필드에 제공된 URL에서 결과를 볼 수 있습니다. 이 메서드에는 쿼리 결과에 크기 제한이 없습니다.
  • getResult 메서드를 사용한 경우 결과는 ZIP 파일로 다운로드됩니다.

    getResult 메서드는 쿼리 결과에 32MB 크기 제한을 적용합니다. 결과가 32MB를 초과하면 쿼리에서 '쿼리 결과가 32MB보다 큽니다'라는 메시지와 함께 400 상태 코드를 반환합니다. 이 한도를 피하려면 쿼리 결과 검색에 설명된 대로 getReulturl 메서드를 사용합니다.

결과는 다음 예시와 같이 새 줄 구분 기호로 구분된 JSON 행으로 구성됩니다.

{"message_count":"10209","apiproxy":"guest-auth-v3","hour":"2018-08-07 19:26:00 UTC"}
{"message_count":"2462","apiproxy":"carts-v2","hour":"2018-08-06 13:16:00 UTC"}    
…

저장소의 데이터가 만료될 때까지 URL에서 결과를 가져올 수 있습니다. 제약조건 및 기본값을 참조하세요.

예시 1: 메시지 수 합계

지난 60분 동안의 메시지 수 합계를 쿼리합니다.

쿼리

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @last60minutes.json

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

last60minutes.json의 요청 본문

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":"last60minutes"
}

예시 2: 커스텀 기간

커스텀 기간을 사용하여 쿼리합니다.

쿼리

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @custom-timerange.json

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

custom-timerange.json의 요청 본문

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      },
      {  
         "name":"total_response_time",
         "function":"avg",
         "alias":"average_response_time"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-11-01T11:00:00Z",
      "end":"2018-11-30T11:00:00Z"
   }
}

예시 3: 분당 트랜잭션

분당 트랜잭션(tpm)의 측정항목에 대한 쿼리입니다.

쿼리

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @tpm.json

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

tpm.json의 요청 본문

{  
   "metrics":[  
      {  
         "name":"tpm"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-07-01T11:00:00Z",
      "end":"2018-07-30T11:00:00Z"
   }
}

샘플 결과

결과 파일에서 발췌:

{"tpm":149995.0,"apiproxy":"proxy_1","minute":"2018-07-06 12:16:00 UTC"}
{"tpm":149998.0,"apiproxy":"proxy_1","minute":"2018-07-09 15:12:00 UTC"}
{"tpm":3.0,"apiproxy":"proxy_2","minute":"2018-07-11 16:18:00 UTC"}
{"tpm":148916.0,"apiproxy":"proxy_1","minute":"2018-07-15 17:14:00 UTC"}
{"tpm":150002.0,"apiproxy":"proxy_1","minute":"2018-07-18 18:11:00 UTC"}
...

예시 4: 필터 표현식 사용

부울 연산자를 사용하는 필터 표현식을 사용하여 쿼리합니다.

쿼리

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @filterCombo.json

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

filterCombo.json의 요청 본문

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum"
      },
      {  
         "name":"total_response_time",
         "function":"avg",
         "alias":"average_response_time"
      }
   ],
   "filter":"(apiproxy ne \u0027proxy_1\u0027) and (apiproxy ne \u0027proxy_2\u0027)",
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":1000,
   "timeRange":{  
      "start":"2018-11-01T11:00:00Z",
      "end":"2018-11-30T11:00:00Z"
   }
}

예시 5: 측정항목 매개변수에서 표현식 전달

측정항목 매개변수의 일부로 전달되는 표현식을 사용하여 쿼리합니다. 간단한 단일 연산자 표현식만 사용할 수 있습니다.

쿼리

curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries" \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d @metricsExpression.json

$TOKENOAuth 2.0 액세스 토큰 가져오기에 설명된 대로 OAuth 2.0 액세스 토큰으로 설정합니다. 이 예시에서 사용된 curl 옵션에 대한 자세한 내용은 curl 사용을 참조하세요. 사용된 환경 변수에 대한 설명은 Apigee API 요청에 대한 환경 변수 설정을 참조하세요.

metricsExpression.json의 요청 본문

{  
   "metrics":[  
      {  
         "name":"message_count",
         "function":"sum",
         "operator":"/",
         "value":"7"
      }
   ],
   "dimensions":[  
      "apiproxy"
   ],
   "groupByTimeUnit":"minute",
   "limit":10,
   "timeRange":"last60minutes"
}