Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
Apigee Analytics proporciona un amplio conjunto de paneles interactivos, generadores de informes personalizados y las funciones que están relacionadas. Sin embargo, el propósito de estas funciones es que sean interactivas: debes enviar una solicitud a la API o a la IU y la solicitud se bloqueará hasta que el servidor de análisis proporcione una respuesta.
Sin embargo, es posible que se agote el tiempo de espera de las solicitudes de estadísticas si tardan demasiado en completarse. Si una solicitud de consulta necesita procesar una gran cantidad de datos (por ejemplo, 100 s de GB), puede fallar debido a que se agota el tiempo de espera.
El procesamiento de consultas asíncronas te permite consultar conjuntos de datos muy grandes y recuperar los resultados más adelante. Puedes considerar el uso de una consulta sin conexión cuando descubras que tus consultas interactivas agotan el tiempo de espera. Algunos casos en los que el procesamiento de consultas asíncronas puede ser una buena alternativa incluyen los siguientes:
- Análisis y creación de informes que abarquen intervalos grandes
- Análisis de datos con una variedad de dimensiones de agrupación y otras restricciones que agregan complejidad a la consulta.
- Administración de consultas cuando se descubre que los volúmenes de datos aumentaron de forma significativa para algunos usuarios u organizaciones.
En este documento, se describe cómo iniciar una consulta asíncrona mediante la API. También puedes usar la IU, como se describe en Ejecuta un informe personalizado.
Compara la API de informes con la IU
En Crea y administra informes personalizados, se describe cómo usar la IU de Apigee para crear y ejecutar informes personalizados. Puedes ejecutar esos informes de forma síncrona o asíncrona.
La mayoría de los conceptos para generar informes personalizados con la IU se aplican al uso de la API. Es decir, cuando creas informes personalizados con la API, especificas métricas, dimensiones y filtros integrados en Apigee.
La principal diferencia entre los informes generados con la API y la IU es que los primeros se escriben en archivos CSV o JSON (delimitados por saltos de línea), mientras que los segundos se muestran en la IU.
Límite de tiempo de las consultas
Apigee aplica un máximo de 365 días en el intervalo de tiempo para una consulta asíncrona.
Cómo realizar una consulta de análisis asíncrono
Haz consultas de estadísticas asíncronas en tres pasos:
Paso 1: Envía la consulta
Debes enviar una solicitud POST a la API de consultas. Esta API le indica a Apigee que procese tu solicitud en segundo plano. Si el envío de la consulta se realiza correctamente, la API muestra un estado 201 y un ID que usarás para hacer referencia a la consulta en pasos posteriores.
Por ejemplo:
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
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
El cuerpo de la solicitud es una descripción JSON de la consulta. En el cuerpo JSON, especifica las métricas, las dimensiones y los filtros que definen el informe.
A continuación, se muestra un ejemplo de archivo json-query-file
:
{
"metrics": [
{
"name": "message_count",
"function": "sum",
"alias": "sum_txn"
}
],
"dimensions": ["apiproxy"],
"timeRange": "last24hours",
"limit": 14400,
"filter":"(message_count ge 0)"
}
Consulta Información del cuerpo de la solicitud a continuación para obtener una descripción completa de la sintaxis del cuerpo de la solicitud.
Respuesta de muestra:
Ten en cuenta que el ID de la consulta 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
se incluye en la respuesta. Además del estado HTTP 201, el state
de enqueued
significa que la solicitud se realizó de forma correcta.
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",
}
Paso 2. Obtén el estado de la consulta
Para solicitar el estado de la consulta, envía una solicitud GET a la API de consultas. Proporciona el ID de consulta que se mostró en la llamada POST. Por ejemplo:
curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID" \ -X GET \ -H "Authorization: Bearer $TOKEN"
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Ejemplos de respuesta:
Si la consulta aún está en curso, obtendrás una respuesta como esta, en la que el state
está en 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"
}
Una vez que la consulta se complete de forma correcta, verás una respuesta como esta, en la que state
está configurado 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"
}
Paso 3: Recupera los resultados de la consulta
Una vez que el estado de la consulta sea completed
, existen dos métodos que puedes usar para recuperar los resultados de la consulta:
getResulturl
(recomendado): Es un método más reciente que muestra una URL en la que puedes ver los resultados de la consulta. Este método no tiene límite de tamaño para los resultados de una consulta.getResult
: Este es un método más antiguo que descarga un archivo ZIP que contiene los resultados de la consulta. Este método aplica un límite de tamaño de 32 MB para los resultados de una consulta.
En las siguientes pestañas, se muestran las llamadas a la API para recuperar los resultados de la consulta con cualquiera de los métodos. Como se indicó anteriormente, el ID de la consulta es 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd
.
getResulturl
(recomendada)
curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID/resulturl" \ -X GET \ -H "Authorization: Bearer $TOKEN"
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
A continuación, se muestra una respuesta de ejemplo a la llamada:
{ "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 ] }
La respuesta contiene una lista urls[]
con los siguientes campos:
uri
: Es una cadena que es la URL firmada de los datos JSON del informe. Puedes ver el informe en la URL.md5
: Es el hash MD5 de los datos JSON.sizeBytes
: El tamaño del contenido devuelto, en bytes.
Consulta Acerca de los resultados de la consulta para ver un resultado de muestra en formato JSON.
getResult
curl "https://apigee.googleapis.com/v1/organizations/ORG/environments/ENV/queries/QUERY_ID/result" \ -X GET \ -H "Authorization: Bearer $TOKEN"
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Con el fin de recuperar el archivo descargado, debes configurar la herramienta que usas para que guarde un archivo descargado en tu sistema. Por ejemplo:
- Si usas cURL, puedes usar las opciones de
-O -J
, como se muestra arriba. - Si usas Postman, debes seleccionar el botón Guardar y descargar. En este caso, se descarga un archivo ZIP llamado
response
. - Si usas el navegador Chrome, la descarga se acepta automáticamente.
Si la solicitud se realiza correctamente y hay un conjunto de resultados que no es cero, el resultado se descarga al cliente como un archivo JSON comprimido (delimitado por saltos de línea). El nombre del archivo descargado será OfflineQueryResult-
.
Por ejemplo: OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
.
El archivo ZIP contiene un archivo .gz de los resultados de JSON. Para acceder al archivo JSON, descomprime el archivo y, luego, usa el comando gzip
a fin de extraerlo:
unzip OfflineQueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd.zip
gzip -d QueryResult-9cfc0d85-0f30-46d6-ae6f-318d0cb961bd-000000000000.json.gz
Información del cuerpo de la solicitud
En esta sección, se describe cada uno de los parámetros que puedes usar en el cuerpo de la solicitud JSON para una consulta. Para obtener más detalles sobre las métricas y dimensiones que puedes usar en tu consulta, consulta Referencia de 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" }
Propiedad | Descripción | ¿Es obligatorio? |
---|---|---|
metrics
|
Array de métricas. Puedes especificar una o más métricas para una consulta en la que se incluya cada una. Solo se requiere el nombre de la métrica:
Las propiedades "metrics":[ { "name":"response_processing_latency", "function":"avg", "alias":"average_response_time_in_seconds", "operator":"/", "value":"1000" } ] Para obtener más información, consulta Referencia de métricas, dimensiones y filtros de Analytics. |
Sí |
dimensions
|
Array de dimensiones para agrupar las métricas. Para obtener más información, consulta la lista de dimensiones compatibles. Puede especificar varias dimensiones. | Sí |
timeRange
|
Intervalo para la consulta.
Puedes usar las siguientes strings predefinidas para especificar el intervalo:
También puedes especificar el "timeRange": { "start": "2018-07-29T00:13:00Z", "end": "2018-08-01T00:18:00Z" } |
Sí |
limit
|
Cantidad máxima de filas que se pueden mostrar en el resultado. | No |
filter
|
Expresión booleana que se puede usar para filtrar datos Las expresiones de filtro se pueden combinar con términos AND y OR y deben estar entre paréntesis para evitar la ambigüedad. Consulta la referencia de métricas, dimensiones y filtros de Analytics si deseas obtener más información sobre los campos disponibles para filtrar. Si deseas obtener más información sobre los tokens que usas para compilar expresiones de filtro, consulta Sintaxis de expresión de filtro. | No |
groupByTimeUnit
|
Es la unidad de tiempo que se usa para agrupar el conjunto de resultados. Entre los valores válidos, se incluyen: second , minute , hour , day , week o month .
Si una consulta incluye |
No |
outputFormat
|
Formato de salida. Entre los valores válidos, se incluyen csv o json . La configuración predeterminada es json , que corresponde al formato JSON delimitado por saltos de línea.
Nota: Configura el delimitador para la salida de CSV mediante la propiedad |
No |
csvDelimiter
|
El delimitador que se usa en el archivo CSV, si outputFormat se configura como csv . El valor predeterminado es el carácter , (coma). Los caracteres delimitadores admitidos incluyen coma (, ), barra vertical (| ) y tabulación (\t ).
|
No |
Sintaxis de la expresión de filtro
En esta sección de referencia, se describen los tokens que puedes usar para compilar expresiones de filtro en el cuerpo de la solicitud. Por ejemplo, la siguiente expresión usa el token “ge” (mayor o igual que):
"filter":"(message_count ge 0)"
Token | Descripción | Ejemplos |
---|---|---|
in
|
Incluir en la lista | (apiproxy in 'ethorapi','weather-api') (apiproxy in 'ethorapi') (apiproxy in 'Search','ViewItem') (response_status_code in 400,401,500,501) Nota: Las strings deben estar entre comillas. |
notin
|
Excluir de la lista | (response_status_code notin 400,401,500,501) |
eq
|
Igual que ==) |
(response_status_code eq 504) (apiproxy eq 'non-prod') |
ne
|
No igual a (!=) |
(response_status_code ne 500) (apiproxy ne 'non-prod') |
gt
|
Mayor que >) |
(response_status_code gt 500) |
lt
|
Menor que <) |
(response_status_code lt 500) |
ge
|
Mayor que o igual que >=) |
(target_response_code ge 400) |
le
|
Menor o igual que <=) |
(target_response_code le 300) |
like
|
Muestra verdadero si el patrón de string coincide con el patrón proporcionado.
El ejemplo de la derecha coincide de la siguiente manera: - cualquier valor que tenga la palabra “comprar” - cualquier valor que finalice en “elemento” - cualquier valor que comience con “Prod” - cualquier valor que comience con 4, nota que response_status_code es numérico.
|
(apiproxy like '%buy%') (apiproxy like '%item') (apiproxy like 'Prod%') |
not like
|
Muestra falso si el patrón de string coincide con el patrón proporcionado. | (apiproxy not like '%buy%') (apiproxy not like '%item') (apiproxy not like 'Prod%') |
and
|
Te permite usar la lógica "and" para incluir más de una expresión de filtro. El filtro incluye los datos que cumplen con todas las condiciones. | (target_response_code gt 399) and (response_status_code ge 400) |
or
|
Te permite usar la lógica 'or' para evaluar diferentes expresiones de filtro posibles. El filtro incluye los datos que cumplen con al menos una de las condiciones. | (response_size ge 1000) or (response_status_code eq 500) |
Restricciones y valores predeterminados
A continuación, se muestra una lista de restricciones y valores predeterminados para la función de procesamiento de consultas asíncronas.
Restricción | Predeterminado | Descripción |
---|---|---|
Límite de llamadas a consultas | Consulta Descripción | Puedes realizar hasta siete llamadas a la API de Apigee por hora /queries para iniciar un informe asíncrono. Si excedes la cuota de llamada, la API muestra una respuesta HTTP 429. |
Límite de consulta activa | 10 | Puedes tener hasta 10 consultas activas para una organización o entorno. |
Límite de tiempo de ejecución de la consulta | 6 horas | Las consultas que tarden más de 6 horas se finalizarán. |
Rango de tiempo de consulta | Consulta Descripción | El intervalo máximo permitido para una consulta es de 365 días. |
Límite de dimensiones y métricas | 25 | El número máximo de dimensiones y métricas que puedes especificar en la carga útil de la consulta. |
Información acerca de los resultados de la consulta
El siguiente es un resultado de ejemplo en formato JSON. La forma en que veas los resultados depende del método que hayas usado para recuperar los resultados de la consulta:
- Si usaste el método
getResulturl
, puedes ver los resultados en la URL que se proporciona en el campouri
del resultado. Este método no tiene límite de tamaño para los resultados de una consulta. Si usaste el método
getResult
, los resultados se descargarán en un archivo ZIP.El método
getResult
aplica un límite de tamaño de 32 MB para los resultados de una consulta. Si los resultados superan los 32 MB, la consulta mostrará un código de estado 400 con el mensaje "el resultado de la consulta es mayor que 32 MB". Para evitar este límite, usa el métodogetReulturl
como se describe en Cómo recuperar los resultados de la consulta.
Los resultados consisten en filas de JSON separadas por un delimitador de línea nueva, como se muestra en el siguiente ejemplo:
{"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"}
…
Puedes recuperar los resultados de la URL hasta el vencimiento de los datos en el repositorio. Consulta Restricciones y valores predeterminados.
Ejemplos
Ejemplo 1: Suma de la cantidad de mensajes
La consulta de la suma de recuentos de mensajes de los ú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
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Cuerpo de la solicitud de last60minutes.json
{
"metrics":[
{
"name":"message_count",
"function":"sum"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":1000,
"timeRange":"last60minutes"
}
Ejemplo 2: Intervalo personalizado
Consulta mediante un intervalo 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
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Cuerpo de la solicitud 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"
}
}
Ejemplo 3: Transacciones por minuto
Consulta la métrica por transacciones 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
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Cuerpo de la solicitud 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 muestra
Salto del archivo 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"} ...
Ejemplo 4: Usa una expresión de filtro
Consulta con una expresión de filtro que use un 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
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Cuerpo de la solicitud 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"
}
}
Ejemplo 5: Pasa una expresión en el parámetro de las métricas
Consulta con una expresión que se pasa como parte del parámetro de métricas. Solo puedes usar expresiones simples de un 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
En el ejemplo anterior, $TOKEN
está configurado como tu token de acceso de OAuth 2.0, como se describe en Obtén un token de acceso de OAuth 2.0. Para obtener información sobre las opciones de curl
que se usan en este ejemplo, consulta Usa curl. Para obtener una descripción de las variables de entorno utilizadas, consulta Configura variables de entorno para solicitudes a la API de Apigee.
Cuerpo de la solicitud de metricsExpression.json
{
"metrics":[
{
"name":"message_count",
"function":"sum",
"operator":"/",
"value":"7"
}
],
"dimensions":[
"apiproxy"
],
"groupByTimeUnit":"minute",
"limit":10,
"timeRange":"last60minutes"
}