Utiliser l'API de création de rapports personnalisés asynchrones

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Apigee Analytics fournit un ensemble complet de tableaux de bord interactifs, de générateurs de rapports personnalisés et de fonctionnalités associées. Toutefois, ces fonctionnalités sont conçues pour être interactives : vous envoyez une requête d'API ou d'interface utilisateur, laquelle est bloquée jusqu'à ce que le serveur d'analyse fournisse une réponse.

Toutefois, les requêtes d'analyse peuvent expirer si leur traitement prend trop de temps. Si une requête doit traiter une grande quantité de données (par exemple, des centaines de Go), elle peut échouer à cause d'un délai avant expiration.

Le traitement des requêtes asynchrones vous permet de lancer des requêtes sur des ensembles de données très volumineux et de récupérer les résultats ultérieurement. Vous pouvez envisager d'utiliser une requête hors connexion lorsque vous constatez que vos requêtes interactives ont expiré. Le traitement des requêtes asynchrones peut constituer une bonne alternative dans certains cas, par exemple :

  • Analyse et création de rapports couvrant de grands intervalles de temps
  • Analyse des données avec diverses dimensions de regroupement et d'autres contraintes qui ajoutent de la complexité à la requête
  • Gestion des requêtes lorsque vous constatez que les volumes de données ont considérablement augmenté pour certains utilisateurs ou organisations

Ce document explique comment lancer une requête asynchrone à l'aide de l'API. Vous pouvez également utiliser l'interface utilisateur, comme décrit dans la section Exécuter un rapport personnalisé.

Comparer l'API de création de rapports à l'interface utilisateur

La page Créer et gérer des rapports personnalisés décrit comment utiliser l'interface utilisateur Apigee pour créer et exécuter des rapports personnalisés. Vous pouvez exécuter ces rapports de manière synchrone ou asynchrone.

La plupart des concepts liés à la génération de rapports personnalisés avec l'interface utilisateur s'appliquent à l'utilisation de l'API. Autrement dit, lorsque vous créez des rapports personnalisés avec l'API, vous spécifiez des métriques, des dimensions et des filtres intégrés à Apigee.

La principale différence entre les rapports générés avec l'API et l'interface utilisateur est que les premiers sont écrits sous la forme de fichiers CSV ou JSON (délimités par un retour à la ligne), tandis que les seconds sont affichés dans l'interface utilisateur.

Durée maximale des requêtes

Apigee applique une durée maximale de 365 jours pour une requête asynchrone.

Créer une requête d'analyse asynchrone

Vous effectuez des requêtes d'analyse asynchrones en trois étapes :

  1. Envoyer la requête

  2. Obtenir l'état de la requête

  3. Récupérer les résultats de la requête

Étape 1. Envoyer la requête

Vous devez envoyer une requête POST à l'API Queries. Cette API indique à Apigee de traiter votre requête en arrière-plan. Si l'envoi de la requête aboutit, l'API renvoie un état 201 et un ID que vous utiliserez pour faire référence à la requête dans les étapes suivantes.

Exemple :

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Le corps de la requête est une description JSON de la requête. Dans le corps JSON, spécifiez les métriques, les dimensions et les filtres qui définissent le rapport.

Vous trouverez ci-dessous un exemple de fichier json-query-file :

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

Pour obtenir une description complète de la syntaxe du corps de la requête, consultez la section À propos du corps de la requête ci-dessous.

Exemple de réponse :

Notez que l'ID de requête 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd est inclus dans la réponse. En plus de l'état HTTP 201, le paramètre state ayant la valeur enqueued signifie que la requête a abouti.

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

Étape 2. Obtenir l'état de la requête

Pour demander l'état de la requête, envoyez une requête GET à l'API Queries. Vous fournissez l'ID de requête renvoyé par l'appel POST. Exemple :

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Exemples de réponses :

Si la requête est toujours en cours, vous obtenez une réponse de ce type, où le paramètre state a la valeur 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"
}

Une fois que la requête a abouti, vous verrez une réponse de ce type, où le paramètre state est défini sur 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"
}

Étape 3. Récupérer les résultats de la requête

Une fois que l'état de la requête est completed, vous pouvez utiliser deux méthodes pour récupérer ses résultats :

  • getResulturl (recommandé) : il s'agit d'une méthode plus récente qui renvoie une URL permettant d'afficher les résultats de la requête. La taille des résultats d'une requête n'est pas limitée avec cette méthode.
  • getResult : il s'agit d'une ancienne méthode qui télécharge un fichier ZIP contenant les résultats de la requête. Cette méthode applique une limite de taille de 32 Mo aux résultats d'une requête.

Les onglets ci-dessous présentent les appels d'API permettant de récupérer les résultats de la requête à l'aide de ces deux méthodes. Comme indiqué ci-dessus, l'ID de requête est 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"

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Voici un exemple de réponse à l'appel :

{
  "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 réponse contient une liste urls[] avec les champs suivants :

  • uri : chaîne correspondant à l'URL signée des données JSON pour le rapport. Vous pouvez afficher le rapport à cette adresse.
  • md5 : hachage MD5 des données JSON.
  • sizeBytes : taille du fichier renvoyé en octets.

Pour obtenir un exemple de résultat au format JSON, consultez la section À propos des résultats de la requête.

getResult

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Pour récupérer le fichier téléchargé, vous devez configurer l'outil que vous utilisez afin qu'il enregistre un fichier téléchargé sur votre système. Exemple :

  • Si vous utilisez cURL, vous pouvez utiliser les options -O -J, comme indiqué ci-dessus.
  • Si vous utilisez Postman, vous devez sélectionner le bouton Enregistrer et télécharger. Dans ce cas, un fichier ZIP appelé response est téléchargé.
  • Si vous utilisez le navigateur Chrome, le téléchargement est accepté automatiquement.

Si la requête aboutit et qu'il existe un ensemble de résultats non nul, le résultat est téléchargé vers le client sous la forme d'un fichier JSON compressé (délimité par un retour à la ligne). Le nom du fichier téléchargé sera OfflineQueryResult-.zip.

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

Le fichier ZIP contient un fichier d'archive .gz des résultats JSON. Pour accéder au fichier JSON, décompressez le fichier téléchargé, puis exécutez la commande gzip pour extraire le fichier JSON :

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

À propos du corps de la requête

Cette section décrit chacun des paramètres que vous pouvez utiliser dans le corps d'une requête JSON. Pour plus de détails sur les métriques et les dimensions que vous pouvez utiliser dans votre requête, consultez la documentation de référence d'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"
}
Valeur Description Obligatoire ?
metrics

Tableau de métriques. Vous pouvez spécifier une ou plusieurs métriques pour une requête, chaque métrique comprenant les éléments suivants. Seul le nom de la métrique est obligatoire :

  • name (obligatoire) : nom de la métrique telle que défini dans le tableau Métriques.
  • function (facultatif) : fonction d'agrégation telle que avg, min, max ou sum.

    Les métriques ne prennent pas toutes en charge toutes les fonctions d'agrégation. La documentation sur les métriques contient un tableau spécifiant le nom de la métrique et la fonction (avg, min, max, sum) prise en charge par la métrique.

  • alias (facultatif) : nom de la propriété contenant les données de métriques dans la sortie. S'il est omis, il est défini par défaut sur le nom de la métrique associé au nom de la fonction d'agrégation.
  • operator (facultatif) : opération à effectuer sur la métrique après le calcul de sa valeur. Fonctionne avec la propriété value. Les opérations prises en charge incluent : + - / % *.
  • value (facultatif) : valeur appliquée à la métrique calculée par la propriété operator spécifiée.

Les propriétés operator et value définissent une opération de post-traitement effectuée sur la métrique. Par exemple, si vous spécifiez la métrique response_processing_latency, elle renvoie la latence moyenne de traitement des réponses avec une unité de millisecondes. Pour convertir les unités en secondes, définissez operator sur "/" et value sur ”1000.0“ :


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

Pour en savoir plus, consultez la documentation de référence sur les métriques, les dimensions et les filtres d'Analytics.

Oui
dimensions Tableau de dimensions permettant de regrouper les métriques. Pour plus d'informations, consultez la liste des dimensions acceptées. Vous pouvez spécifier plusieurs dimensions. Oui
timeRange Période pour la requête.

Vous pouvez utiliser les chaînes prédéfinies suivantes pour spécifier la période :

  • last60minutes
  • last24hours
  • last7days

Vous pouvez également spécifier timeRange sous forme de structure décrivant les horodatages de début et de fin au format ISO : yyyy-mm-ddThh:mm:ssZ. Exemple :


"timeRange": {
    "start": "2018-07-29T00:13:00Z",
    "end": "2018-08-01T00:18:00Z"
}
Oui
limit Nombre maximal de lignes pouvant être renvoyées dans le résultat. Non
filter Expression booléenne pouvant servir à filtrer les données. Les expressions de filtre peuvent être combinées à l'aide de termes AND/OR et doivent être entièrement placées entre parenthèses pour éviter toute ambiguïté. Pour plus d'informations sur les champs disponibles pour le filtrage, consultez la documentation de référence sur les métriques, les dimensions et les filtres d'Analytics. Pour plus d'informations sur les jetons que vous utilisez pour créer des expressions de filtre, consultez la section Syntaxe des expressions de filtre. Non
groupByTimeUnit Unité de temps utilisée pour regrouper l'ensemble de résultats. Les valeurs valides incluent second, minute, hour, day, week ou month.

Si une requête inclut groupByTimeUnit, le résultat est une agrégation basée sur l'unité de temps spécifiée, et l'horodatage obtenu n'inclut pas la précision en millisecondes. Si une requête omet groupByTimeUnit, l'horodatage obtenu inclut une précision en millisecondes.

Non
outputFormat Format de sortie. Les valeurs valides incluent csv ou json. La valeur par défaut est json, qui correspond au format JSON délimité par un retour à la ligne.

Remarque : Configurez le délimiteur pour la sortie CSV à l'aide de la propriété csvDelimiter.

Non
csvDelimiter Délimiteur utilisé dans le fichier CSV, si outputFormat est défini sur csv. La valeur par défaut est la virgule (,). Les caractères de délimitation pris en charge comprennent la virgule (,), la barre verticale (|) et la tabulation (\t). Non

Syntaxe des expressions de filtre

Cette section de référence décrit les jetons que vous pouvez utiliser pour créer des expressions de filtre dans le corps de la requête. Par exemple, l'expression suivante utilise le jeton "ge" (supérieur ou égal à) :

"filter":"(message_count ge 0)"
Jeton Description Exemples
in Inclure dans la liste

(apiproxy in 'ethorapi','weather-api')

(apiproxy in 'ethorapi')

(apiproxy in 'Search','ViewItem')

(response_status_code in 400,401,500,501)

Remarque : Les chaînes doivent être entre guillemets.

notin Exclure de la liste

(response_status_code notin 400,401,500,501)
eq Égal à (==)

(response_status_code eq 504)

(apiproxy eq 'non-prod')
ne Différent de (!=)

(response_status_code ne 500)

(apiproxy ne 'non-prod')
gt Supérieur à (>)

(response_status_code gt 500)
lt Inférieur à (<)

(response_status_code lt 500)
ge Supérieur ou égal à (>=)

(target_response_code ge 400)
le Inférieur ou égal à (<=)

(target_response_code le 300)
like Renvoie true si le modèle de chaîne correspond au modèle fourni.

L'exemple à droite correspond comme suit :

- toute valeur comportant le mot "buy"

- toute valeur se terminant par "item"

- toute valeur commençant par "Prod"

- toute valeur commençant par 4 (notez que response_status_code est numérique)


(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like Renvoie false si le modèle de chaîne correspond au modèle fourni.

(apiproxy not like '%buy%')

(apiproxy not like '%item')

(apiproxy not like 'Prod%')
and Vous permet d'utiliser "and" pour inclure plus d'une expression de filtre. Le filtre inclut des données qui répondent à toutes les conditions.

(target_response_code gt 399) and (response_status_code ge 400)
or Vous permet d'utiliser "or" pour évaluer différentes expressions de filtre possibles. Le filtre inclut des données qui répondent à au moins une des conditions.

(response_size ge 1000) or (response_status_code eq 500)

Contraintes et valeurs par défaut

Vous trouverez ci-dessous la liste des contraintes et des valeurs par défaut pour la fonctionnalité de traitement des requêtes asynchrones.

Contrainte Par défaut Description
Limite d'appels de requête Voir la description Vous pouvez effectuer jusqu'à sept appels par heure à l'API /queries Apigee pour lancer un rapport asynchrone. Si vous dépassez le quota d'appels, l'API renvoie une réponse HTTP 429.
Limite de requêtes actives 10 Vous pouvez avoir jusqu'à 10 requêtes actives par organisation/environnement.
Seuil de temps d'exécution de la requête 6 heures Les requêtes qui durent plus de six heures sont arrêtées.
Période de la requête Voir la description La période maximale autorisée pour une requête est de 365 jours.
Limite de dimensions et de métriques 25 Nombre maximal de dimensions et de métriques que vous pouvez spécifier dans la charge utile de la requête.

À propos des résultats de la requête

Vous trouverez ci-dessous un exemple de résultat au format JSON. La façon dont vous affichez les résultats dépend de la méthode utilisée pour récupérer les résultats de la requête :

  • Si vous avez utilisé la méthode getResulturl, vous pouvez afficher les résultats à l'URL indiquée dans le champ uri du résultat. La taille des résultats d'une requête n'est pas limitée avec cette méthode.
  • Si vous avez utilisé la méthode getResult, les résultats sont téléchargés dans un fichier ZIP.

    La méthode getResult applique une limite de taille de 32 Mo aux résultats d'une requête. Si les résultats dépassent 32 Mo, la requête renvoie un code d'état 400 avec le message "le résultat de la requête dépasse 32 Mo". Pour éviter cette limite, utilisez la méthode getReulturl comme décrit dans la section Récupérer les résultats de la requête.

Les résultats comprennent des lignes JSON séparées par un nouveau délimiteur de ligne, comme illustré dans l'exemple suivant :

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

Vous pouvez extraire les résultats de l'URL jusqu'à l'expiration des données dans le dépôt. Consultez la section Contraintes et valeurs par défaut.

Exemples

Exemple 1 : Somme des messages

Requête portant sur la somme des messages au cours des 60 dernières minutes.

Query

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Corps de la requête de last60minutes.json

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

Exemple 2 : Période personnalisée

Requête utilisant une période personnalisée.

Query

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Corps de la requête 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"
   }
}

Exemple 3 : Transactions par minute

Requête sur la métrique pour les transactions par minute (tpm).

Query

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Corps de la requête 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"
   }
}

Exemple de résultat

Extrait du fichier de résultats :

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

Exemple 4 : Utiliser une expression de filtre

Requête avec une expression de filtre utilisant un opérateur booléen.

Query

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Corps de la requête 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"
   }
}

Exemple 5 : Transmettre une expression dans le paramètre "metrics"

Requête avec une expression transmise dans le cadre du paramètre "metrics". Vous ne pouvez utiliser que des expressions simples à un opérateur.

Query

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

$TOKEN est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les options curl utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.

Corps de la requête de metricsExpression.json

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