Utilizzo dell'API dei report personalizzati asincroni

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Apigee Analytics fornisce un ricco insieme di dashboard interattive, generatori di report personalizzati e funzionalità correlate. Tuttavia, queste funzionalità sono pensate per essere interattive: invii una richiesta API o UI e la richiesta viene bloccata finché il server di analisi non fornisce una risposta.

Tuttavia, le richieste di analisi possono scadere se richiedono troppo tempo per essere completate. Se una richiesta di query deve elaborare una grande quantità di dati (ad esempio centinaia di GB), potrebbe non riuscire a causa di un timeout.

L'elaborazione asincrona delle query ti consente di eseguire query su set di dati molto grandi e recuperare i risultati in un secondo momento. Potresti prendere in considerazione l'utilizzo di una query offline quando noti che le query interattive vanno in timeout. Alcune situazioni in cui l'elaborazione asincrona delle query potrebbe essere una buona alternativa includono:

  • Analisi e creazione di report che coprono intervalli di tempo ampi.
  • Analisi dei dati con una serie di dimensioni di raggruppamento e altri vincoli che aumentano la complessità della query.
  • Gestire le query quando noti che i volumi di dati sono aumentati in modo significativo per alcuni utenti o organizzazioni.

Questo documento descrive come avviare una query asincrona utilizzando l'API. Puoi anche utilizzare la UI, come descritto in Esecuzione di un report personalizzato.

Confronto tra l'API Reports e l'interfaccia utente

Creare e gestire report personalizzati descrive come utilizzare la UI di Apigee per creare ed eseguire report personalizzati. Puoi eseguire questi report in modo sincrono o asincrono.

La maggior parte dei concetti per la generazione di report personalizzati con l'interfaccia utente si applica all'utilizzo dell'API. ovvero, quando crei report personalizzati con l'API, specifichi metriche, dimensioni e filtri integrati in Apigee.

La differenza principale tra i report generati con l'API e quelli generati con l'interfaccia utente è che i primi vengono scritti in file CSV o JSON (delimitati da caratteri di nuova riga), mentre i secondi vengono visualizzati nell'interfaccia utente.

Limite di tempo per le query

Apigee applica un limite massimo di 365 giorni all'intervallo di tempo per una query asincrona.

Come eseguire una query di analisi asincrona

Esegui query di analisi asincrone in tre passaggi:

  1. Invia la query.

  2. Ottieni lo stato della query.

  3. Recupera i risultati della query.

Passaggio 1: Invia la query

Devi inviare una richiesta POST all'API Queries. Questa API indica ad Apigee di elaborare la tua richiesta in background. Se l'invio della query va a buon fine, l'API restituisce lo stato 201 e un ID che utilizzerai per fare riferimento alla query nei passaggi successivi.

Ad esempio:

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Il corpo della richiesta è una descrizione JSON della query. Nel corpo JSON, specifica le metriche, le dimensioni e i filtri che definiscono il report.

Di seguito è riportato un esempio di file json-query-file:

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

Per una descrizione completa della sintassi del corpo della richiesta, consulta la sezione Informazioni sul corpo della richiesta di seguito.

Esempio di risposta:

Tieni presente che l'ID query 9cfc0d85-0f30-46d6-ae6f-318d0cb961bd è incluso nella risposta. Oltre allo stato HTTP 201, il state di enqueued indica che la richiesta è andata a buon fine.

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

Passaggio 2: Ottenere lo stato della query

Per richiedere lo stato della query, invia una richiesta GET all'API Queries. Fornisci l'ID query restituito dalla chiamata POST. Ad esempio:

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Risposte di esempio:

Se la query è ancora in corso, riceverai una risposta come questa, in cui 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"
}

Una volta completata correttamente la query, vedrai una risposta come questa, in cui state è impostato su 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"
}

Passaggio 3: Recuperare i risultati della query

Una volta che lo stato della query è completed, puoi utilizzare due metodi per recuperare i risultati della query:

  • getResulturl (consigliato): questo è un metodo più recente che restituisce un URL in cui puoi visualizzare i risultati della query. Questo metodo non prevede limiti di dimensioni per i risultati di una query.
  • getResult: questo è un metodo precedente che scarica un file zip contenente i risultati della query. Questo metodo impone un limite di dimensione di 32 MB ai risultati di una query.

Le schede riportate di seguito mostrano le chiamate API per recuperare i risultati della query utilizzando uno dei due metodi. Come sopra, l'ID query è 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"

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Di seguito è riportato un esempio di risposta alla chiamata:

{
  "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 risposta contiene un elenco urls[] con i seguenti campi:

  • uri: una stringa che è l'URL firmato dei dati JSON per il report. Puoi visualizzare il report all'URL.
  • md5: l'hash MD5 dei dati JSON.
  • sizeBytes: le dimensioni del file restituito in byte.

Consulta la sezione Informazioni sui risultati della query per un esempio di risultato in formato JSON.

getResult

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Per recuperare il file scaricato, devi configurare lo strumento che utilizzi in modo che salvi un file scaricato nel tuo sistema. Ad esempio:

  • Se utilizzi cURL, puoi utilizzare le opzioni -O -J, come mostrato sopra.
  • Se utilizzi Postman, devi selezionare il pulsante Salva e scarica. In questo caso, viene scaricato un file ZIP denominato response.
  • Se utilizzi il browser Chrome, il download viene accettato automaticamente.

Se la richiesta ha esito positivo e il set di risultati non è zero, il risultato viene scaricato sul client come file JSON compresso (delimitato da nuova riga). Il nome del file scaricato sarà OfflineQueryResult-.zip.

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

Il file ZIP contiene un file di archivio .gz dei risultati JSON. Per accedere al file JSON, decomprimi il file scaricato, quindi utilizza il comando gzip per estrarre il file JSON:

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

Informazioni sul corpo della richiesta

Questa sezione descrive ciascuno dei parametri che puoi utilizzare nel corpo della richiesta JSON per una query. Per informazioni dettagliate sulle metriche e sulle dimensioni che puoi utilizzare nella query, consulta la documentazione di riferimento di 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"
}
Proprietà Descrizione Obbligatorio?
metrics

Array di metriche. Puoi specificare una o più metriche per una query in cui ogni metrica include: È richiesto solo il nome della metrica:

  • name: (obbligatorio) il nome della metrica come definito dalla tabella in metriche.
  • function: (facoltativo) la funzione di aggregazione come avg, min, max o sum.

    Non tutte le metriche supportano tutte le funzioni di aggregazione. La documentazione sulle metriche contiene una tabella che specifica il nome della metrica e la funzione (avg, min, max,sum) supportata dalla metrica.

  • alias: (facoltativo) il nome della proprietà contenente i dati delle metriche nell'output. Se omesso, il valore predefinito è il nome della metrica combinato con il nome della funzione di aggregazione.
  • operator: (facoltativo) un'operazione da eseguire sulla metrica dopo che il relativo valore è stato calcolato. Funziona con la proprietà value. Le operazioni supportate includono: + - / % *.
  • value: (facoltativo) il valore applicato alla metrica calcolata dal operator specificato.

Le proprietà operator e value definiscono un'operazione di post-elaborazione eseguita sulla metrica. Ad esempio, se specifichi la metrica response_processing_latency, la metrica restituisce la latenza media di elaborazione della risposta con un'unità di millisecondi. Per convertire le unità in secondi, imposta operator su "/" e value su ”1000.0“:

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

Per ulteriori informazioni, consulta Riferimento per metriche, dimensioni e filtri di analisi.

dimensions Matrice di dimensioni per raggruppare le metriche. Per ulteriori informazioni, consulta l'elenco delle dimensioni supportate. Puoi specificare più dimensioni.
timeRange Intervallo di tempo per la query.

Puoi utilizzare le seguenti stringhe predefinite per specificare l'intervallo di tempo:

  • last60minutes
  • last24hours
  • last7days

In alternativa, puoi specificare timeRange come struttura che descrive i timestamp di inizio e fine nel formato ISO: yyyy-mm-ddThh:mm:ssZ. Ad esempio:

"timeRange": {
    "start": "2018-07-29T00:13:00Z",
    "end": "2018-08-01T00:18:00Z"
}
limit Il numero massimo di righe che possono essere restituite nel risultato. No
filter Espressione booleana che può essere utilizzata per filtrare i dati. Le espressioni di filtro possono essere combinate utilizzando i termini AND/OR e devono essere completamente racchiuse tra parentesi per evitare ambiguità. Per ulteriori informazioni sui campi disponibili per il filtro, consulta Riferimento per metriche, dimensioni e filtri di Analytics. Per saperne di più sui token che utilizzi per creare espressioni di filtro, consulta Sintassi delle espressioni di filtro. No
groupByTimeUnit Unità di tempo utilizzata per raggruppare il set di risultati. I valori validi includono: second, minute, hour, day, week o month.

Se una query include groupByTimeUnit, il risultato è un'aggregazione basata sull'unità di tempo specificata e il timestamp risultante non include la precisione in millisecondi. Se una query omette groupByTimeUnit, il timestamp risultante include la precisione in millisecondi.

No
outputFormat Formato di output. I valori validi includono: csv o json. Il valore predefinito è json corrispondente a JSON delimitato da nuova riga.

Nota: configura il delimitatore per l'output CSV utilizzando la proprietà csvDelimiter.

No
csvDelimiter Delimitatore utilizzato nel file CSV, se outputFormat è impostato su csv. Il valore predefinito è , (virgola). I caratteri delimitatori supportati includono virgola (,), barra verticale (|) e tabulazione (\t). No

Sintassi dell'espressione di filtro

Questa sezione di riferimento descrive i token che puoi utilizzare per creare espressioni di filtro nel corpo della richiesta. Ad esempio, la seguente espressione utilizza il token "ge" (maggiore o uguale a):

"filter":"(message_count ge 0)"
Token Descrizione Esempi
in Includi nell'elenco
(apiproxy in 'ethorapi','weather-api')

(apiproxy in 'ethorapi')

(apiproxy in 'Search','ViewItem')

(response_status_code in 400,401,500,501)

Nota: le stringhe devono essere racchiuse tra virgolette.

notin Escludi dall'elenco
(response_status_code notin 400,401,500,501)
eq Uguale a (==)
(response_status_code eq 504)

(apiproxy eq 'non-prod')
ne Non uguale a (!=)
(response_status_code ne 500)

(apiproxy ne 'non-prod')
gt Maggiore di (>)
(response_status_code gt 500)
lt Meno di (<)
(response_status_code lt 500)
ge Maggiore o uguale a (>=)
(target_response_code ge 400)
le Minore o uguale a (<=)
(target_response_code le 300)
like Restituisce true se il modello di stringa corrisponde al modello fornito.

L'esempio a destra corrisponde come segue:

- qualsiasi valore che contenga la parola "acquista"

- qualsiasi valore che termina con "item"

- qualsiasi valore che inizia con "Prod"

- qualsiasi valore che inizia con 4, tieni presente che response_status_code è numerico

(apiproxy like '%buy%')

(apiproxy like '%item')

(apiproxy like 'Prod%')
not like Restituisce false se il pattern della stringa corrisponde al pattern fornito.
(apiproxy not like '%buy%')

(apiproxy not like '%item')

(apiproxy not like 'Prod%')
and Consente di utilizzare la logica "e" per includere più di un'espressione di filtro. Il filtro include i dati che soddisfano tutte le condizioni.
(target_response_code gt 399) and (response_status_code ge 400)
or Consente di utilizzare la logica "OR" per valutare diverse espressioni di filtro possibili. Il filtro include i dati che soddisfano almeno una delle condizioni.
(response_size ge 1000) or (response_status_code eq 500)

Vincoli e valori predefiniti

Di seguito è riportato un elenco di vincoli e valori predefiniti per la funzionalità di elaborazione asincrona delle query.

Vincolo Predefinito Descrizione
Limite di chiamate di query Vedi descrizione Puoi effettuare fino a sette chiamate all'ora all'API Apigee /queries per avviare un report asincrono. Se superi la quota di chiamate, l'API restituisce una risposta HTTP 429.
Limite query attive 10 Puoi avere fino a 10 query attive per un'organizzazione/un ambiente.
Soglia del tempo di esecuzione della query 6 ore Le query che richiedono più di 6 ore verranno terminate.
Intervallo di tempo della query Vedi descrizione L'intervallo di tempo massimo consentito per una query è 365 giorni.
Limite di dimensioni e metriche 25 Il numero massimo di dimensioni e metriche che puoi specificare nel payload della query.

Informazioni sui risultati della query

Di seguito è riportato un esempio di risultato in formato JSON. Il modo in cui visualizzi i risultati dipende dal metodo che hai utilizzato per recuperare i risultati della query:

  • Se hai utilizzato il metodo getResulturl puoi visualizzare i risultati all'URL indicato nel campo uri del risultato. Questo metodo non prevede limiti alle dimensioni dei risultati di una query.
  • Se hai utilizzato il metodo getResult, i risultati verranno scaricati in un file ZIP.

    Il metodo getResult impone un limite di dimensione di 32 MB ai risultati di una query. Se i risultati superano i 32 MB, la query restituirà un codice di stato 400 con il messaggio "query result is larger than 32 MB" (il risultato della query è superiore a 32 MB). Per evitare questo limite, utilizza il metodo getReulturl come descritto in Recuperare i risultati della query.

I risultati sono costituiti da righe JSON separate da un delimitatore di nuova riga, come mostrato nell'esempio seguente:

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

Puoi recuperare i risultati dall'URL fino alla scadenza dei dati nel repository. Consulta Vincoli e valori predefiniti.

Esempi

Esempio 1: somma dei conteggi dei messaggi

Query per la somma dei conteggi dei messaggi negli ultimi 60 minuti.

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Corpo della richiesta da last60minutes.json

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

Esempio 2: intervallo di tempo personalizzato

Esegui query utilizzando un intervallo di tempo personalizzato.

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Corpo della richiesta da 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"
   }
}

Esempio 3: transazioni al minuto

Esegui una query sulla metrica per le transazioni al minuto (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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Corpo della richiesta da tpm.json

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

Risultato di esempio

Estratto dal file dei risultati:

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

Esempio 4: utilizzo di un'espressione di filtro

Query con un'espressione di filtro che utilizza un operatore booleano.

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Corpo della richiesta da 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"
   }
}

Esempio 5: trasmettere l'espressione nel parametro delle metriche

Query con un'espressione passata come parte del parametro delle metriche. Puoi utilizzare solo espressioni semplici con un solo operatore.

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

Dove $TOKEN è impostato sul tuo token di accesso OAuth 2.0, come descritto in Ottenere un token di accesso OAuth 2.0. Per informazioni sulle opzioni curl utilizzate in questo esempio, consulta la sezione Utilizzare curl. Per una descrizione delle variabili di ambiente che puoi utilizzare, consulta Impostazione delle variabili di ambiente per le richieste API Apigee.

Corpo della richiesta da metricsExpression.json

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