Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da Apigee Edge.
O Apigee Analytics oferece um conjunto avançado de painéis interativos, geradores de relatórios personalizados e recursos relacionados. No entanto, esses recursos são interativos: você envia uma solicitação de IU ou API e a solicitação fica bloqueada até o servidor de análise retornar uma resposta.
Porém, as solicitações de análise poderão expirar se levarem muito tempo para serem concluídas. Se uma solicitação de consulta precisar processar uma grande quantidade de dados (por exemplo, centenas de GB), ela poderá expirar.
O processamento de consulta assíncrona permite consultar conjuntos de dados muito grandes e recuperar os resultados depois. Convém usar uma consulta off-line quando você achar que as consultas interativas podem expirar. Veja a seguir algumas situações em que o processamento de consulta assíncrona pode ser uma boa alternativa:
- Análise e criação de relatórios que abrangem períodos longos
- Análise de dados com uma variedade de dimensões de agrupamento e outras restrições que aumentam a complexidade da consulta
- Gerenciamento de consultas quando você perceber que os volumes de dados aumentaram significativamente para alguns usuários ou organizações
Neste documento, descrevemos como iniciar uma consulta assíncrona usando a API. Também é possível usar a IU, conforme descrito em Como gerar um relatório personalizado.
Comparação da API Reports com a IU
O documento Criar e gerenciar relatórios personalizados detalha como usar a IU da Apigee para criar e executar relatórios personalizados. É possível gerar esses relatórios de maneira síncrona ou assíncrona.
A maioria dos conceitos para a geração de relatórios personalizados com a IU envolve o uso da API. Ou seja, ao criar relatórios personalizados com a API, você especifica métricas, dimensões e filtros incorporados à Apigee.
A principal diferença entre os relatórios gerados com a API e os gerados com a IU é que os primeiros são gravados em arquivos CSV ou JSON (delimitados por novas linhas), enquanto os últimos são exibidos na IU.
Limite de tempo em consultas
A Apigee impõe no máximo 365 dias no período para uma consulta assíncrona.
Como fazer uma consulta de análise assíncrona
Você realiza consultas de análise assíncronas em três etapas:
Etapa 1. enviar a consulta
É necessário enviar uma solicitação POST à API Queries. Essa API instrui a Apigee a processar sua solicitação em segundo plano. Se o envio da consulta for bem-sucedido, a API retornará o status 201 e um ID que você usará para se referir à consulta em etapas 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
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas,
consulte Como definir variáveis de ambiente para solicitações de API da Apigee.
O corpo da solicitação é uma descrição JSON da consulta. No corpo do JSON, especifique as métricas, as dimensões e os filtros que definem o relatório.
Veja abaixo um exemplo de arquivo json-query-file
:
{
"metrics": [
{
"name": "message_count",
"function": "sum",
"alias": "sum_txn"
}
],
"dimensions": ["apiproxy"],
"timeRange": "last24hours",
"limit": 14400,
"filter":"(message_count ge 0)"
}
Consulte Sobre o corpo da solicitação abaixo para uma descrição completa da sintaxe do corpo da solicitação.
Exemplo de resposta:
O ID da consulta 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
está incluído na resposta. Além do status HTTP 201, o state
de enqueued
significa que a solicitação foi bem-sucedida.
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",
}
Etapa 2. acessar o status da consulta
Para solicitar o status da consulta, envie uma solicitação GET para a API Queries. Você insere o ID da consulta retornado da chamada POST. Por exemplo:
curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID" \ -X GET \ -H "Authorization: Bearer $TOKEN"
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Exemplos de respostas:
Se a consulta ainda estiver em andamento, você receberá 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 que a consulta for concluída, você verá 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"
}
Etapa 3. recuperar os resultados da consulta
Depois que o status da consulta for completed
, será possível usar dois métodos para
recuperar os resultados dela:
getResulturl
(recomendado): esse é um método mais recente que retorna um URL em que é possível conferir os resultados da consulta. Ele não tem limite de tamanho nos resultados de uma consulta.getResult
: esse é um método mais antigo para fazer o download de um arquivo ZIP que contém os resultados da consulta. Esse método impõe um limite de tamanho de 32 MB aos resultados de uma consulta.
As guias abaixo mostram chamadas de API para recuperar os resultados da consulta usando qualquer um dos
métodos. Como mostrado 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"
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Confira a seguir um exemplo de resposta para a 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 de urls[]
com os seguintes campos:
uri
: uma string que é o URL assinado dos dados JSON do relatório. Confira o relatório no URL.md5
: o hash MD5 dos dados JSON.sizeBytes
: o tamanho do arquivo retornado em bytes.
Consulte Sobre os resultados da consulta para conferir 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"
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Para recuperar o arquivo do download, você precisa configurar a ferramenta usada de modo que ela salve esses arquivos no seu sistema. Por exemplo:
- Se você usa cURL, pode usar as opções
-O -J
, como mostrado acima. - Se você usa Postman, precisa selecionar o botão Save and Download. Nesse caso, um arquivo ZIP chamado
response
é transferido por download. - Se você usa o navegador Chrome, o download é aceito automaticamente.
Se a solicitação for bem-sucedida e houver um conjunto de resultados diferente de zero, o download do resultado será
feito no cliente como um arquivo JSON (delimitado por nova linha) compactado. O nome do arquivo baixado será OfflineQueryResult-
.
Por exemplo, OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
.
O arquivo ZIP contém um arquivo .gz dos resultados do JSON. Para acessar o arquivo JSON, descompacte o arquivo de download e use o comando gzip
para extrair o arquivo JSON:
unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gz
Sobre o corpo da solicitação
Nesta seção, descrevemos cada um dos parâmetros que é possível usar no corpo da solicitação JSON em uma consulta. Veja mais detalhes sobre as métricas e dimensões que podem ser usadas na consulta em 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. É possível especificar uma ou mais métricas na consulta 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 a 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 compatíveis. É possível especificar várias dimensões. | Sim |
timeRange
|
Período da consulta.
É possível usar as seguintes strings predefinidas para especificar o período:
Se preferir, especifique "timeRange": { "start": "2018-07-29T00:13:00Z", "end": "2018-08-01T00:18:00Z" } |
Sim |
limit
|
Número máximo de linhas que podem ser retornadas 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 ser colocadas entre parênteses para evitar ambiguidade. Consulte a Referência de métricas, dimensões e filtros do Analytics para mais informações sobre os campos disponíveis para filtragem. Para mais informações sobre os tokens que você usa para criar expressões de filtro, consulte Sintaxe da expressão 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 da saída. Os valores válidos incluem csv ou json . O padrão é json
correspondente ao JSON delimitado por nova linha.
Observação: configure o delimitador para a saída CSV usando a propriedade |
Não |
csvDelimiter
|
Delimitador usado no arquivo CSV, se outputFormat estiver definido como csv . O padrão é o caractere , (vírgula). Os caracteres delimitadores aceitos são vírgula (, ), barra vertical (| ) e tabulação (\t ).
|
Não |
Sintaxe da expressão do filtro
Nesta seção de referência, descrevemos os tokens que podem ser usados para criar expressões de filtro no corpo da solicitação. Por exemplo, a expressão a seguir usa o token "ge" (maior ou igual a):
"filter":"(message_count ge 0)"
Token | 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) Observação: as strings precisam 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
|
Maior que (>)
|
(response_status_code gt 500) |
lt
|
Menor que (<)
|
(response_status_code lt 500) |
ge
|
Maior que ou igual a (>=)
|
(target_response_code ge 400) |
le
|
Menor que ou igual a (<=)
|
(target_response_code le 300) |
like
|
Retorna verdadeiro se o padrão de string corresponder ao padrão fornecido.
O exemplo à direita corresponde da seguinte maneira: - qualquer valor que tenha a palavra "buy" - qualquer valor que termine em "item" - qualquer valor que comece com "Prod" - qualquer valor que comece com 4. Observe que response_status_code é numérico
|
(apiproxy like '%buy%') (apiproxy like '%item') (apiproxy like 'Prod%') |
not like
|
Retorna 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 que você use a lógica "and" para incluir mais de uma expressão de filtro. O filtro inclui os dados que atendem a todas as condições. | (target_response_code gt 399) and (response_status_code ge 400) |
or
|
Permite que você use a lógica "or" para avaliar diferentes expressões de filtro possíveis. O filtro inclui os dados que atendem a pelo menos uma das condições. | (response_size ge 1000) or (response_status_code eq 500) |
Restrições e padrões
Veja a seguir uma lista de restrições e padrões para o recurso de processamento de consulta assíncrona.
Restrição | Padrão | Descrição |
---|---|---|
Limite de chamadas de consulta | Consulte a descrição | É possível fazer até sete chamadas por hora à API /queries da Apigee para iniciar um relatório assíncrono. Se você exceder a cota de chamada, a API retornará uma resposta HTTP 429. |
Limite de consultas ativas | 10 | É possível ter até 10 consultas ativas em uma organização/ambiente. |
Limite de tempo de execução da consulta | 6 horas | As consultas que levam mais de seis horas serão encerradas. |
Período da consulta | Consulte a descrição | O período 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 é possível especificar no payload da consulta. |
Sobre os resultados da consulta
Veja a seguir um exemplo de resultado no formato JSON. A forma como você visualiza os resultados depende do método usado para recuperar os resultados da consulta:
- Se você usou o método
getResulturl
, é possível conferir os resultados no URL fornecido no campouri
do resultado. Esse método não tem limite de tamanho nos resultados de uma consulta. Se você usou o método
getResult
, os resultados são transferidos por download em um arquivo ZIP.O método
getResult
impõe um limite de tamanho de 32 MB aos resultados de uma consulta. Se os resultados excederem 32 MB, a consulta retornará um código de status 400 com a mensagem "o resultado da consulta é maior que 32 MB". Para evitar esse limite, use o métodogetReulturl
, conforme descrito em Recuperar os resultados da consulta.
Os resultados consistem em linhas JSON separadas por um novo delimitador de linha, conforme mostrado no seguinte exemplo:
{"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"}
…
É possível buscar os resultados do URL até a expiração dos dados no repositório. Consulte Restrições e padrões.
Exemplos
Exemplo 1: soma das contagens de mensagens
Consulta da 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
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Corpo da solicitação de last60minutes.json
{
"metrics":[
{
"name":"message_count",
"function":"sum"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":"last60minutes"
}
Exemplo 2: período personalizado
Consulta que usa um período 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
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Corpo da solicitação 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
Consulta com base na 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
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Corpo da solicitação 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"
}
}
Resultado de amostra
Trecho do arquivo 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: como 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
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Corpo da solicitação 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: expressão de passagem no parâmetro de métricas
Consulta com uma expressão passada como parte do parâmetro de métricas. Somente é possível usar expressões simples de operador único.
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
Em que $TOKEN
está definido como seu token de acesso OAuth 2.0, conforme descrito em
Como receber um token de acesso OAuth 2.0. Para informações sobre as opções de curl
usadas neste exemplo, consulte
Como usar curl. Para uma descrição das variáveis de ambiente usadas, consulte
Como definir variáveis de ambiente para solicitações de API da Apigee.
Corpo da solicitação de metricsExpression.json
{
"metrics":[
{
"name":"message_count",
"function":"sum",
"operator":"/",
"value":"7"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":10,
"timeRange":"last60minutes"
}