Usar a API de relatórios personalizados assíncronos

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

O Apigee Analytics oferece um conjunto abrangente de painéis de controlo interativos, geradores de relatórios personalizados e capacidades relacionadas. No entanto, estas funcionalidades destinam-se a ser interativas: envia um pedido de API ou de IU e o pedido é bloqueado até que o servidor de estatísticas forneça uma resposta.

No entanto, os pedidos de estatísticas podem expirar se demorarem demasiado tempo a serem concluídos. Se um pedido de consulta tiver de processar uma grande quantidade de dados (por exemplo, centenas de GB), pode falhar devido a um limite de tempo.

O processamento de consultas assíncronas permite-lhe consultar conjuntos de dados muito grandes e obter os resultados mais tarde. Pode considerar usar uma consulta offline quando verificar que as consultas interativas atingem o limite de tempo. Algumas situações em que o processamento de consultas assíncronas pode ser uma boa alternativa incluem:

  • Analisar e criar relatórios que abrangem grandes intervalos de tempo.
  • Analisar dados com várias dimensões de agrupamento e outras restrições que adicionam complexidade à consulta.
  • Gerir consultas quando constata que os volumes de dados aumentaram significativamente para alguns utilizadores ou organizações.

Este documento descreve como iniciar uma consulta assíncrona através da API. Também pode usar a IU, conforme descrito no artigo Executar um relatório personalizado.

Comparar a API Reports com a IU

O artigo Crie e faça a gestão de relatórios personalizados descreve como usar a IU do Apigee para criar e executar relatórios personalizados. Pode executar esses relatórios de forma síncrona ou assíncrona.

A maioria dos conceitos para gerar relatórios personalizados com a IU aplica-se à utilização da API. Ou seja, quando cria relatórios personalizados com a API, especifica métricas, dimensões e filtros incorporados no Apigee.

A principal diferença entre os relatórios gerados com a API e os gerados com a IU é que os primeiros são escritos em ficheiros CSV ou JSON (delimitados por nova linha), enquanto os últimos são apresentados na IU.

Limite de tempo nas consultas

O Apigee aplica um máximo de 365 dias ao intervalo de tempo de uma consulta assíncrona.

Como fazer uma consulta de estatísticas assíncrona

Faz consultas de estatísticas assíncronas em três passos:

  1. Envie a consulta.

  2. Obtenha o estado da consulta.

  3. Recupere os resultados da consulta.

Passo 1. Enviar a consulta

Tem de enviar um pedido POST para a API Queries. Esta API indica ao Apigee que processe o seu pedido em segundo plano. Se o envio da consulta for bem-sucedido, a API devolve um estado 201 e um ID que vai usar para se referir à consulta em passos posteriores.

Por exemplo:

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

O corpo do pedido é uma descrição JSON da consulta. No corpo JSON, especifique as métricas, as dimensões e os filtros que definem o relatório.

Segue-se um exemplo de um ficheiro json-query-file:

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

Consulte a secção Acerca do corpo do pedido abaixo para ver uma descrição completa da sintaxe do corpo do pedido.

Exemplo de resposta:

Tenha em atenção que o ID da consulta 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd está incluído na resposta. Além do estado HTTP 201, o elemento state de enqueued significa que o pedido foi bem-sucedido.

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

Passo 2. Obtenha o estado da consulta

Para pedir o estado da consulta, envie um pedido GET para a API Queries. Indica o ID da consulta que foi devolvido pela chamada POST. Por exemplo:

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Exemplos de respostas:

Se a consulta ainda estiver em curso, recebe uma resposta como esta, em que state é running:

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

Depois de a consulta ser concluída com êxito, é apresentada uma resposta como esta, em que state está definido como completed:

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

Passo 3. Obter os resultados da consulta

Depois de o estado da consulta ser completed, existem dois métodos que pode usar para obter os resultados da consulta:

  • getResulturl (recomendado): este é um método mais recente que devolve um URL onde pode ver os resultados da consulta. Este método não tem limite de tamanho nos resultados de uma consulta.
  • getResult: este é um método mais antigo que transfere um ficheiro ZIP com os resultados da consulta. Este método aplica um limite de tamanho de 32 MB aos resultados de uma consulta.

Os separadores abaixo mostram chamadas da API para obter os resultados da consulta através de qualquer um dos métodos. Tal como acima, o ID da consulta é 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"

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Segue-se uma resposta de exemplo à chamada:

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

A resposta contém uma lista urls[] com os seguintes campos:

  • uri: uma string que é o URL assinado dos dados JSON para o relatório. Pode ver o relatório no URL.
  • md5: o hash MD5 dos dados JSON.
  • sizeBytes: o tamanho do ficheiro devolvido em bytes.

Consulte a secção Acerca dos resultados da consulta para ver um exemplo de resultado no formato JSON.

getResult

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Para aceder ao ficheiro transferido, tem de configurar a ferramenta que usa para que guarde um ficheiro transferido no seu sistema. Por exemplo:

  • Se usar o cURL, pode usar as opções -O -J, como mostrado acima.
  • Se usar o Postman, tem de selecionar o botão Guardar e transferir. Neste caso, é transferido um ficheiro ZIP denominado response.
  • Se usar o navegador Chrome, a transferência é aceite automaticamente.

Se o pedido for bem-sucedido e houver um conjunto de resultados diferente de zero, o resultado é transferido para o cliente como um ficheiro JSON (delimitado por nova linha) comprimido. O nome do ficheiro transferido é OfflineQueryResult-.zip.

Por exemplo: OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip .

O ficheiro ZIP contém um ficheiro de arquivo .gz dos resultados JSON. Para aceder ao ficheiro JSON, descomprima o ficheiro transferido e, em seguida, use o comando gzip para extrair o ficheiro JSON:

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

Acerca do corpo do pedido

Esta secção descreve cada um dos parâmetros que pode usar no corpo do pedido JSON para uma consulta. Para ver detalhes sobre as métricas e as dimensões que pode usar na sua consulta, consulte a referência do Analytics.

{  
   "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"
}
Propriedade Descrição Obrigatório?
metrics

Matriz de métricas. Pode especificar uma ou mais métricas para uma consulta em que cada métrica inclui. Apenas o nome da métrica é obrigatório:

  • name: (Obrigatório) O nome da métrica, conforme definido pela tabela em metrics.
  • function: (opcional) A função de agregação como avg, min, max ou sum.

    Nem todas as métricas suportam todas as funções de agregação. A documentação sobre as métricas contém uma tabela que especifica o nome da métrica e a função (avg, min, max e sum) suportada pela métrica.

  • alias: (Opcional) O nome da propriedade que contém os dados de métricas na saída. Se for omitido, a predefinição é o nome da métrica combinado com o nome da função de agregação.
  • operator: (Opcional) Uma operação a realizar na métrica depois de o respetivo valor ter sido calculado. Funciona com a propriedade do value. As operações suportadas incluem: + - / % *.
  • value: (Opcional) O valor aplicado à métrica calculada pelo operator especificado.

As propriedades operator e value definem uma operação de pós-processamento realizada na métrica. Por exemplo, se especificar a métrica response_processing_latency, a métrica devolve a latência média de processamento de respostas com uma unidade de milissegundos. Para converter as unidades em segundos, defina operator como "/" e value como ”1000.0“:

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

Para mais informações, consulte o artigo Referência de métricas, dimensões e filtros do Analytics.

Sim
dimensions Matriz de dimensões para agrupar as métricas. Para mais informações, consulte a lista de dimensões suportadas. Pode especificar várias dimensões. Sim
timeRange Intervalo de tempo da consulta.

Pode usar as seguintes strings predefinidas para especificar o intervalo de tempo:

  • last60minutes
  • last24hours
  • last7days

Em alternativa, pode especificar o timeRange como uma estrutura que descreve as indicações de tempo de início e de fim no formato ISO: yyyy-mm-ddThh:mm:ssZ. Por exemplo:

"timeRange": {
    "start": "2018-07-29T00:13:00Z",
    "end": "2018-08-01T00:18:00Z"
}
Sim
limit Número máximo de linhas que podem ser devolvidas no resultado. Não
filter Expressão booleana que pode ser usada para filtrar dados. As expressões de filtro podem ser combinadas com termos AND/OR e devem ter parênteses completos para evitar ambiguidades. Consulte a referência de métricas, dimensões e filtros do Analytics para ver mais informações sobre os campos disponíveis para filtragem. Para mais informações sobre os tokens que usa para criar expressões de filtro, consulte o artigo Sintaxe de expressões de filtro. Não
groupByTimeUnit Unidade de tempo usada para agrupar o conjunto de resultados. Os valores válidos incluem: second, minute, hour, day, week ou month.

Se uma consulta incluir groupByTimeUnit, o resultado é uma agregação baseada na unidade de tempo especificada, e a data/hora resultante não inclui a precisão de milissegundos. Se uma consulta omitir groupByTimeUnit, a data/hora resultante inclui a precisão de milissegundos.

Não
outputFormat Formato de saída. Os valores válidos incluem: csv ou json. A predefinição é json correspondente a JSON delimitado por Newline.

Nota: configure o delimitador para a saída CSV através da propriedade csvDelimiter.

Não
csvDelimiter Delimitador usado no ficheiro CSV, se outputFormat estiver definido como csv. A predefinição é o caráter , (vírgula). Os carateres delimitadores suportados incluem a vírgula (,), a barra vertical (|) e a tabulação (\t). Não

Sintaxe das expressões de filtro

Esta secção de referência descreve os tokens que pode usar para criar expressões de filtro no corpo do pedido. Por exemplo, a seguinte expressão usa o token "ge" (maior ou igual a):

"filter":"(message_count ge 0)"
Símbolo Descrição Exemplos
in Incluir na lista
(apiproxy in 'ethorapi','weather-api')

(apiproxy in 'ethorapi')

(apiproxy in 'Search','ViewItem')

(response_status_code in 400,401,500,501)

Nota: as strings têm de estar entre aspas.

notin Excluir da lista
(response_status_code notin 400,401,500,501)
eq Igual a (==)
(response_status_code eq 504)

(apiproxy eq 'non-prod')
ne Diferente de (!=)
(response_status_code ne 500)

(apiproxy ne 'non-prod')
gt Superior a (>)
(response_status_code gt 500)
lt Menos de (<)
(response_status_code lt 500)
ge Maior ou igual a (>=)
(target_response_code ge 400)
le Menor ou igual a (<=)
(target_response_code le 300)
like Devolve true se o padrão de string corresponder ao padrão fornecido.

O exemplo à direita corresponde da seguinte forma:

– Qualquer valor que tenha a palavra "comprar"

– Qualquer valor que termine em "item"

– Qualquer valor que comece por "Prod"

– Qualquer valor que comece por 4. Tenha em atenção que response_status_code é numérico

(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like Devolve falso se o padrão de string corresponder ao padrão fornecido.
(apiproxy not like '%buy%')

(apiproxy not like '%item')

(apiproxy not like 'Prod%')
and Permite usar a lógica "e" para incluir mais do que uma expressão de filtro. O filtro inclui dados que cumprem todas as condições.
(target_response_code gt 399) and (response_status_code ge 400)
or Permite usar a lógica "ou" para avaliar diferentes expressões de filtro possíveis. O filtro inclui dados que cumprem, pelo menos, uma das condições.
(response_size ge 1000) or (response_status_code eq 500)

Restrições e predefinições

Segue-se uma lista de restrições e predefinições para a funcionalidade de processamento de consultas assíncronas.

Restrição Predefinição Descrição
Limite de chamadas de consultas Ver descrição Pode fazer até sete chamadas por hora para a API Apigee /queries para iniciar um relatório assíncrono. Se exceder a quota de chamadas, a API devolve uma resposta HTTP 429.
Limite de consultas ativas 10 Pode ter até 10 consultas ativas para uma organização/ambiente.
Limite de tempo de execução da consulta 6 horas As consultas que demorarem mais de 6 horas são terminadas.
Intervalo de tempo da consulta Ver descrição O intervalo de tempo máximo permitido para uma consulta é de 365 dias.
Limite de dimensões e métricas 25 O número máximo de dimensões e métricas que pode especificar no payload da consulta.

Acerca dos resultados da consulta

Segue-se um exemplo de resultado no formato JSON. A forma como vê os resultados depende do método que usou para obter os resultados da consulta:

  • Se usou o método getResulturl pode ver os resultados no URL indicado no campo uri do resultado. Este método não tem limite de tamanho nos resultados de uma consulta.
  • Se usou o método getResult, os resultados são transferidos num ficheiro ZIP.

    O método getResult aplica um limite de tamanho de 32 MB aos resultados de uma consulta. Se os resultados excederem 32 MB, a consulta devolve um código de estado 400 com a mensagem "query result is larger than 32 MB" (o resultado da consulta é superior a 32 MB). Para evitar este limite, use o método getReulturl, conforme descrito em Obtenha os resultados da consulta.

Os resultados consistem em linhas JSON separadas por um delimitador de nova linha, conforme mostrado no exemplo seguinte:

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

Pode obter os resultados do URL até à expiração dos dados no repositório. Consulte as restrições e os valores predefinidos.

Exemplos

Exemplo 1: soma das contagens de mensagens

Consulta a soma das contagens de mensagens nos últimos 60 minutos.

Consulta

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Corpo do pedido de last60minutes.json

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

Exemplo 2: intervalo de tempo personalizado

Consultar usando um intervalo de tempo personalizado.

Consulta

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Corpo do pedido de 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"
   }
}

Exemplo 3: transações por minuto

Consulte a métrica de transações por minuto (tpm).

Consulta

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Corpo do pedido de tpm.json

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

Exemplo de resultado

Excerto do ficheiro de resultados:

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

Exemplo 4: usar uma expressão de filtro

Consulta com uma expressão de filtro que usa um operador booleano.

Consulta

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Corpo do pedido de 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"
   }
}

Exemplo 5: transmitir expressão no parâmetro metrics

Consulta com uma expressão transmitida como parte do parâmetro metrics. Só pode usar expressões simples com um operador.

Consulta

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

Onde $TOKEN está definido como a sua chave de acesso OAuth 2.0, conforme descrito em Obter uma chave de acesso OAuth 2.0. Para informações sobre as opções de curl usadas neste exemplo, consulte a secção Usar o curl. Para uma descrição das variáveis de ambiente que pode usar, consulte o artigo Definir variáveis de ambiente para pedidos de API Apigee.

Corpo do pedido de metricsExpression.json

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