Aggrega i dati di un determinato tipo o di un flusso in bucket divisi per un determinato tipo di confine. È possibile aggregare più set di dati di più tipi da più origini in un solo tipo di bucket per richiesta. Prova subito.
Risorse richieste:
Richiesta HTTP
POST https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Parametri
Nome del parametro | Valore | Descrizione |
---|---|---|
Parametri del percorso | ||
userId |
string |
Dati aggregati relativi alla persona identificata. Utilizza me per indicare
l'utente autenticato. Al momento è supportato solo me .
|
Autorizzazione
Questa richiesta richiede l'autorizzazione con almeno uno dei seguenti ambiti:
Ambito |
---|
https://www.googleapis.com/auth/fitness.activity.read |
https://www.googleapis.com/auth/fitness.activity.write |
https://www.googleapis.com/auth/fitness.location.read |
https://www.googleapis.com/auth/fitness.location.write |
https://www.googleapis.com/auth/fitness.body.read |
https://www.googleapis.com/auth/fitness.body.write |
https://www.googleapis.com/auth/fitness.nutrition.read |
https://www.googleapis.com/auth/fitness.nutrition.write |
https://www.googleapis.com/auth/fitness.blood_pressure.read |
https://www.googleapis.com/auth/fitness.blood_pressure.write |
https://www.googleapis.com/auth/fitness.blood_glucose.read |
https://www.googleapis.com/auth/fitness.blood_glucose.write |
https://www.googleapis.com/auth/fitness.oxygen_saturation.read |
https://www.googleapis.com/auth/fitness.oxygen_saturation.write |
https://www.googleapis.com/auth/fitness.body_temperature.read |
https://www.googleapis.com/auth/fitness.body_temperature.write |
https://www.googleapis.com/auth/fitness.reproductive_health.read |
https://www.googleapis.com/auth/fitness.reproductive_health.write |
Per scoprire di più, consulta la pagina Autenticazione e autorizzazione.
Corpo della richiesta
Nel corpo della richiesta, fornisci i dati con la seguente struttura:
{ "startTimeMillis": long, "endTimeMillis": long, "aggregateBy": [ { "dataTypeName": string, "dataSourceId": string } ], "filteredDataQualityStandard": [ string ], "bucketByTime": { "durationMillis": long, "period": { "type": string, "value": integer, "timeZoneId": string } }, "bucketBySession": { "minDurationMillis": long }, "bucketByActivityType": { "minDurationMillis": long, "activityDataSourceId": string }, "bucketByActivitySegment": { "minDurationMillis": long, "activityDataSourceId": string } }
Nome proprietà | Valore | Descrizione | Note |
---|---|---|---|
startTimeMillis |
long |
L'inizio di una finestra temporale. I dati che si intersecano con questa finestra temporale saranno aggregati. Il tempo è espresso in millisecondi a partire dal periodo. | |
endTimeMillis |
long |
La fine di una finestra temporale. I dati che si intersecano con questa finestra temporale saranno aggregati. Il tempo è espresso in millisecondi a partire dal periodo. | |
aggregateBy[] |
list |
La specifica dei dati da aggregare. È necessario fornire almeno una specifica aggregateBy. Tutti i dati specificati verranno aggregati utilizzando gli stessi criteri dei bucket. La risposta conterrà un set di dati per ogni specifica aggregateBy. | |
aggregateBy[].dataTypeName |
string |
Il tipo di dati da aggregare. Tutte le origini dati che forniscono questo tipo di dati contribuiranno all'aggregazione dei dati. La risposta conterrà un singolo set di dati per questo nome del tipo di dati. Il set di dati avrà un ID origine dati derivata: | |
aggregateBy[].dataSourceId |
string |
Un ID origine dati da aggregare. Nell'aggregazione verranno inclusi solo i dati provenienti dall'ID origine dati specificato. Se specificato, deve esistere questa origine dati; gli ambiti OAuth nelle credenziali fornite devono concedere l'accesso in lettura a questo tipo di dati. Il set di dati nella risposta avrà lo stesso ID origine dati. Nota: i dati possono essere aggregati per dataTypeName o per dataSourceId, non per entrambi. | |
filteredDataQualityStandard[] |
list |
NON POPOLARE QUESTO CAMPO. ma viene ignorata. | |
bucketByTime |
nested object |
Specifica che i dati devono essere aggregati per un singolo intervallo di tempo. Escluse a vicenda altre specifiche del bucket. | |
bucketByTime.durationMillis |
long |
Specifica che i bucket di risultati aggregano i dati in base ai periodi di tempo esatti per millis. Gli intervalli di tempo che non contengono dati verranno inclusi nella risposta con un set di dati vuoto. | |
bucketByTime.period |
nested object |
||
bucketByTime.period.type |
string |
I valori accettati sono:
|
|
bucketByTime.period.value |
integer |
||
bucketByTime.period.timeZoneId |
string |
org.joda.timezone.DateTimeZone | |
bucketBySession |
nested object |
Specifica che i dati devono essere aggregati per sessioni utente. I dati che non rientrano nell'intervallo di tempo di una sessione non verranno inclusi nella risposta. Escluse a vicenda altre specifiche del bucket. | |
bucketBySession.minDurationMillis |
long |
Specifica che solo le sessioni di durata superiore a minDurationMillis vengono considerate e utilizzate come contenitore per i dati aggregati. | |
bucketByActivityType |
nested object |
Specifica che i dati devono essere aggregati in base al tipo di attività eseguita al momento della registrazione. Tutti i dati registrati durante un determinato tipo di attività (per l'intervallo di tempo specificato) verranno aggregati nello stesso bucket. I dati registrati mentre l'utente non era attivo non saranno inclusi nella risposta. Escluse a vicenda altre specifiche del bucket. | |
bucketByActivityType.minDurationMillis |
long |
Specifica che solo i segmenti di attività di durata superiore a minDurationMillis vengono considerati e utilizzati come contenitori per i dati aggregati. | |
bucketByActivityType.activityDataSourceId |
string |
Se non è stato specificato un valore activityDataSourceId specifico, verrà utilizzato il flusso di attività predefinito. | |
bucketByActivitySegment |
nested object |
Specifica che i dati devono essere aggregati per ogni segmento di attività registrato per un utente. Analogamente a bucketByActivitySegment, il bucket viene eseguito per ogni segmento di attività anziché per tutti i segmenti dello stesso tipo. Escluse a vicenda altre specifiche del bucket. | |
bucketByActivitySegment.minDurationMillis |
long |
Specifica che solo i segmenti di attività di durata superiore a minDurationMillis vengono considerati e utilizzati come contenitori per i dati aggregati. | |
bucketByActivitySegment.activityDataSourceId |
string |
Se non è stato specificato un valore activityDataSourceId specifico, verrà utilizzato il flusso di attività predefinito. |
Risposta
In caso di esito positivo, questo metodo restituisce un corpo di risposta con la seguente struttura:
{ "bucket": [ { "type": string, "startTimeMillis": long, "endTimeMillis": long, "dataset": [ users.dataSources.datasets Resource ], "session": { "id": string, "name": string, "description": string, "startTimeMillis": long, "endTimeMillis": long, "modifiedTimeMillis": long, "application": { "packageName": string, "version": string, "detailsUrl": string, "name": string }, "activityType": integer, "activeTimeMillis": long }, "activity": integer } ] }
Nome proprietà | Valore | Descrizione | Note |
---|---|---|---|
bucket[] |
list |
Un elenco di bucket contenenti i dati aggregati. | |
bucket[].type |
string |
Il tipo di un bucket indica il modo in cui l'aggregazione dei dati viene eseguita nel bucket.
I valori accettati sono:
|
|
bucket[].startTimeMillis |
long |
L'ora di inizio dei dati aggregati, in millisecondi dal periodo incluso. | |
bucket[].endTimeMillis |
long |
L'ora di fine dei dati aggregati, in millisecondi dal periodo incluso. | |
bucket[].dataset[] |
list |
La richiesta conterrà un set di dati per AggregateBy. | |
bucket[].session |
nested object |
Disponibile per Bucket.Type.SESSION | |
bucket[].session.id |
string |
Un identificatore generato dal client che sia univoco per tutte le sessioni di proprietà di questo particolare utente. | |
bucket[].session.name |
string |
Un nome leggibile della sessione. | |
bucket[].session.description |
string |
Una descrizione della sessione. | |
bucket[].session.startTimeMillis |
long |
Un'ora di inizio, in millisecondi a partire dal periodo, compreso. | |
bucket[].session.endTimeMillis |
long |
Un'ora di fine, in millisecondi dal periodo, inclusi. | |
bucket[].session.modifiedTimeMillis |
long |
Un timestamp che indica quando la sessione è stata modificata l'ultima volta. | |
bucket[].session.application |
nested object |
L'applicazione che ha creato la sessione. | |
bucket[].session.application.packageName |
string |
Nome del pacchetto dell'applicazione. Viene utilizzato come identificatore univoco quando viene creato dalle applicazioni Android, ma non può essere specificato dai client REST. Il numero di progetto client degli sviluppatori REST verrà riportato negli ID stream di dati dell'origine dati, anziché in packageName. | |
bucket[].session.application.version |
string |
Versione dell'applicazione. Devi aggiornare questo campo ogni volta che l'applicazione cambia in modo da influire sul calcolo dei dati. | |
bucket[].session.application.detailsUrl |
string |
Un URI facoltativo che può essere utilizzato per il collegamento all'applicazione. | |
bucket[].session.application.name |
string |
Il nome dell'applicazione. Questo passaggio è obbligatorio per i client REST, ma non applichiamo l'unicità di questo nome. Viene fornito per comodità di altri sviluppatori che vogliono identificare quale REST ha creato un'applicazione o un'origine dati. | |
bucket[].session.activityType |
integer |
Il tipo di attività rappresentata da questa sessione. | |
bucket[].session.activeTimeMillis |
long |
Durata attività sessione. Mentre start_time_millis e end_time_millis definiscono l'intera durata della sessione, il tempo attivo può essere più breve e specificato da active_time_millis. Se il tempo di inattività durante la sessione è noto, deve essere inserito anche tramite un punto dati com.google.activity.segment con un valore STILL dell'attività |
|
bucket[].activity |
integer |
Disponibile per Bucket.Type.Activity_TYPE, Bucket.Type.Activity_SEGMENT |
Prova.
Utilizza Explorer API di seguito per chiamare questo metodo in base ai dati in tempo reale e visualizzare la risposta.