Users.dataset: aggregate

Agrega dados de um determinado tipo ou stream em buckets divididos por um determinado tipo de limite. Vários conjuntos de dados de vários tipos e de várias fontes podem ser agregados em exatamente um tipo de bucket por solicitação. Faça o teste agora.

Solicitação

Solicitação HTTP

POST https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate

Parâmetros

Nome do parâmetro Valor Descrição
Parâmetros de caminho
userId string Dados agregados para a pessoa identificada. Use me para indicar o usuário autenticado. Somente me é compatível no momento.

Autorização

Esta solicitação requer autorização com pelo menos um dos seguintes escopos:

Escopo
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

Para mais informações, consulte a página de autenticação e autorização.

Corpo da solicitação

No corpo da solicitação, forneça os dados com a seguinte estrutura:

{
  "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 da propriedade Valor Descrição Observações
startTimeMillis long O início de uma janela de tempo. Os dados que se cruzam com esse período serão agregados. O tempo é em milissegundos desde a época, inclusive.
endTimeMillis long O fim de uma janela de tempo. Os dados que se cruzam com esse período serão agregados. O tempo é em milissegundos desde a época, inclusive.
aggregateBy[] list A especificação dos dados a serem agregados. Pelo menos uma especificação aggregateBy deve ser fornecida. Todos os dados especificados serão agregados usando os mesmos critérios de agrupamento. Haverá um conjunto de dados na resposta para cada especificação aggregateBy.
aggregateBy[].dataTypeName string O tipo de dados a serem agregados. Todas as fontes que fornecem esse tipo de dado contribuem para a agregação. A resposta conterá um único conjunto de dados para esse nome de tipo de dados. O conjunto de dados terá um ID de fonte de dados derivado::com.google.android.gms:aggregated. Se o usuário não tiver dados para esse tipo de dado, um conjunto de dados vazio será retornado. Observação: os dados podem ser agregados pelo dataTypeName ou datadataId, não por ambos.
aggregateBy[].dataSourceId string Um ID de fonte de dados a ser agregado. Somente as informações do ID da fonte de dados especificado serão incluídas na agregação. Se especificada, essa origem de dados precisa existir. Os escopos do OAuth nas credenciais fornecidas precisam conceder acesso de leitura a esse tipo de dado. O conjunto de dados na resposta terá o mesmo ID da fonte de dados. Observação: os dados podem ser agregados pelo dataTypeName ou pelo dataSourceId, não por ambos.
filteredDataQualityStandard[] list NÃO preencha este campo. Ela será ignorada.
bucketByTime nested object Especifica que os dados são agregados por um único intervalo de tempo. Mutuamente exclusivo de outras especificações de bucket.
bucketByTime.durationMillis long Especifica que os buckets de resultados agregam dados por exatamente os períodos. Os períodos que não contêm dados serão incluídos na resposta com um conjunto de dados vazio.
bucketByTime.period nested object
bucketByTime.period.type string

Os valores aceitáveis são:
  • "day"
  • "month"
  • "week"
bucketByTime.period.value integer
bucketByTime.period.timeZoneId string org.joda.fuso horário.DateTimeZone
bucketBySession nested object Especifica que os dados são agregados por sessões de usuários. Os dados que não se enquadram no período de uma sessão não serão incluídos na resposta. Mutuamente exclusivo de outras especificações de bucket.
bucketBySession.minDurationMillis long Especifica que apenas sessões com duração maior que minDurationMillis são consideradas e usadas como um contêiner para dados agregados.
bucketByActivityType nested object Especifica que os dados são agregados pelo tipo de atividade realizada quando os dados são gravados. Todos os dados que foram registrados durante um determinado tipo de atividade (no período especificado) serão agregados no mesmo bucket. Os dados registrados enquanto o usuário não estava ativo não serão incluídos na resposta. Mutuamente exclusivo de outras especificações de bucket.
bucketByActivityType.minDurationMillis long Especifica que somente segmentos de atividade com duração maior que minDurationMillis são considerados e usados como um contêiner para dados agregados.
bucketByActivityType.activityDataSourceId string O stream de atividade padrão será usado se um activityDataSourceId específico não for especificado.
bucketByActivitySegment nested object Especifica que os dados serão agregados a cada segmento de atividade registrado para um usuário. Semelhante a bucketByActivitySegment, mas o agrupamento por classes é feito para cada segmento de atividade em vez de todos os segmentos do mesmo tipo. Mutuamente exclusivo de outras especificações de bucket.
bucketByActivitySegment.minDurationMillis long Especifica que somente segmentos de atividade com duração maior que minDurationMillis são considerados e usados como um contêiner para dados agregados.
bucketByActivitySegment.activityDataSourceId string O stream de atividade padrão será usado se um activityDataSourceId específico não for especificado.

Resposta

Se for bem-sucedido, esse método retornará um corpo de resposta com esta estrutura:

{
  "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 da propriedade Valor Descrição Observações
bucket[] list Uma lista de buckets que contém os dados agregados.
bucket[].type string O tipo de um bucket significa como a agregação de dados é realizada no bucket.

Os valores aceitáveis são:
  • "activitySegment"
  • "activityType"
  • "session"
  • "time"
  • "unknown"
bucket[].startTimeMillis long É o horário de início dos dados agregados, em milissegundos desde a época, inclusive.
bucket[].endTimeMillis long O horário de término dos dados agregados, em milissegundos, desde época.
bucket[].dataset[] list Haverá um conjunto de dados por AggregateBy na solicitação.
bucket[].session nested object Disponível para Bucket.Type.SESSION
bucket[].session.id string Um identificador gerado pelo cliente que é exclusivo em todas as sessões desse usuário específico.
bucket[].session.name string É um nome legível da sessão.
bucket[].session.description string É uma descrição para esta sessão.
bucket[].session.startTimeMillis long Um horário de início, em milissegundos desde a época, inclusive.
bucket[].session.endTimeMillis long Um horário de término, em milissegundos desde a época, inclusive.
bucket[].session.modifiedTimeMillis long Carimbo de data/hora que indica quando a sessão foi modificada pela última vez.
bucket[].session.application nested object O aplicativo que criou a sessão.
bucket[].session.application.packageName string Nome do pacote para este aplicativo. Ele é usado como um identificador exclusivo quando criado por aplicativos Android, mas não pode ser especificado por clientes REST. Os clientes REST terão o número do projeto do desenvolvedor refletido nos IDs do fluxo de dados da fonte de dados, em vez do packageName.
bucket[].session.application.version string Versão do aplicativo. Atualize esse campo sempre que o aplicativo mudar de modo que afete o cálculo dos dados.
bucket[].session.application.detailsUrl string Um URI opcional que pode ser usado para vincular ao aplicativo.
bucket[].session.application.name string O nome deste aplicativo. Isso é necessário para clientes REST, mas não aplicamos exclusividade desse nome. Esse recurso é de conveniência para outros desenvolvedores que querem identificar qual REST criou um aplicativo ou uma fonte de dados.
bucket[].session.activityType integer Tipo de atividade representado pela sessão.
bucket[].session.activeTimeMillis long Tempo de atividade da sessão. Embora start_time_millis e end_time_millis definam o tempo completo da sessão, o tempo de atividade pode ser mais curto e especificado por active_time_millis. Se o tempo de inatividade durante a sessão for conhecido, ele também deverá ser inserido por meio de um ponto de dados com.google.activity.segment com um valor de atividade STILL

bucket[].activity integer Disponível para Bucket.Type.SEARCH_TYPE, Bucket.Type.SEARCH_SEGMENT

Confira!

Use o APIs Explorer abaixo para chamar esse método em dados ativos e ver a resposta.