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:
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
.
getResulturl
(recomendado)
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-
.
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:
As propriedades "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:
Em alternativa, pode especificar o "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 |
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 |
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 campouri
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étodogetReulturl
, 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"
}