---
name: azion-consulte-dados-agregados-com-graphql
description: >-
  Some os bytes que suas aplicações enviaram por bucket de tempo com uma query agregada da GraphQL API ao endpoint de métricas, pelo curl ou outro cliente HTTP.
---

# Consulte dados agregados com GraphQL

Você pode ler totais ao longo do tempo na [GraphQL API](/pt-br/documentacao/devtools/graphql/visao-geral/) com uma query agregada, enviada pelo `curl` ou por qualquer outro cliente HTTP.

Dados agregados são dados de requisições que o endpoint de métricas armazena agrupados em buckets de tempo. Uma query agregada aplica uma função, como `sum`, a um campo e retorna uma linha por grupo. Para as regras de uma query agregada, consulte [Queries](/pt-br/documentacao/devtools/graphql/queries/#dados-agregados). O exemplo abaixo lê o dataset `workloadMetrics`. O dataset `httpMetrics` foi descontinuado e retorna as mesmas linhas; use `workloadMetrics`. Para os datasets de cada endpoint, consulte [Datasets e argumentos de query](/pt-br/documentacao/devtools/graphql/recursos/).

---

## Pré-requisitos

- Um personal token. Para criar um, consulte [Como criar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- Uma aplicação em [Applications](/pt-br/documentacao/plataforma/applications/) que recebeu requisições durante a janela de tempo consultada.
- O `curl` ou outro cliente HTTP que envie requisições `POST`. Para executar uma query pelo GraphiQL Playground em vez disso, consulte [Primeiros passos com a GraphQL API](/pt-br/documentacao/devtools/graphql/primeiros-passos/).

---

## Some os bytes enviados por bucket de tempo

Esta query soma `bytesSent`, os bytes enviados aos clientes, em cada bucket de tempo de uma janela de sete dias. Para executá-la:

1. **Escreva a query**

   Defina `begin` e `end` em `tsRange` como a janela que você quer ler, no formato `YYYY-MM-DDTHH:mm:ss`:

   ```graphql
   query HttpQuery {
     workloadMetrics(
       limit: 10,
       filter: {
         tsRange: {begin:"2026-09-26T14:00:00", end:"2026-10-03T14:00:00"}
       }
       aggregate: {sum: bytesSent}
       groupBy: [ts]
       orderBy: [ts_ASC]
     )
     {
       ts
       sum
     }
   }
   ```

2. **Envie a query**

   Envie a query na chave `query` de um corpo JSON para `https://api.azion.com/v4/metrics/graphql`. Substitua `[TOKEN VALUE]` pelo seu personal token:

   ```bash
   curl -X POST 'https://api.azion.com/v4/metrics/graphql' \
     -H 'Content-Type: application/json' \
     -H 'Authorization: Token [TOKEN VALUE]' \
     -d '{"query":"query HttpQuery { workloadMetrics(limit: 10, filter: { tsRange: {begin: \"2026-09-26T14:00:00\", end: \"2026-10-03T14:00:00\"} }, aggregate: {sum: bytesSent}, groupBy: [ts], orderBy: [ts_ASC]) { ts sum } }"}'
   ```

3. **Leia a resposta**

   A API responde `200` com 10 linhas. A resposta abaixo está cortada após as três primeiras linhas:

   ```json
   {
     "data": {
       "workloadMetrics": [
         {
           "ts": "2026-09-26T16:00:00Z",
           "sum": 104492
         },
         {
           "ts": "2026-09-27T18:00:00Z",
           "sum": 1100
         },
         {
           "ts": "2026-09-27T22:00:00Z",
           "sum": 14088
         },
         …
       ]
     }
   }
   ```

Cada linha contém o início de um bucket de tempo em `ts`, em UTC, e os bytes enviados durante ele em `sum`, do bucket mais antigo para o mais recente. Em uma janela de sete dias, os buckets têm uma hora, e uma hora sem requisições não retorna linha. A duração da janela define o tamanho do bucket, conforme descreve [Como a GraphQL API funciona](/pt-br/documentacao/devtools/graphql/visao-geral/). Um array `workloadMetrics` vazio significa que nenhuma requisição correspondeu à janela.

Três argumentos moldam o resultado:

| Argumento   | No exemplo         | O que faz                                                                                                                                                                |
| ----------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `aggregate` | `{sum: bytesSent}` | Aplica a função `sum` ao campo `bytesSent`. O resultado volta em um campo com o nome da função, `sum`.                                                                   |
| `groupBy`   | `[ts]`             | Retorna uma linha por valor dos campos listados. `[ts]` retorna uma linha por bucket de tempo. Sem `groupBy`, a resposta contém uma linha com o total da janela inteira. |
| `orderBy`   | `[ts_ASC]`         | Ordena as linhas por um campo e um sufixo de direção. `ts_ASC` lista primeiro o bucket mais antigo, `ts_DESC` o mais recente e `sum_DESC` o maior total.                 |

Para somar outro campo, substitua `bytesSent` em `aggregate`, por exemplo por `requestTime` ou `requests`. Para os campos que cada função aceita, consulte [Queries](/pt-br/documentacao/devtools/graphql/queries/#funcoes-de-agregacao).

---

## Próximos passos

- [Encontre os valores mais frequentes com GraphQL](/pt-br/documentacao/guias/plataforma/observabilidade/graphql-query-top-x.md): Classifique os valores mais frequentes de um campo, como hosts ou códigos de status.
- [Campos do Real-Time Metrics](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-metrics.md): Todos os campos de workloadMetrics e dos outros datasets de Metrics.
- [Limites da GraphQL API](/pt-br/documentacao/devtools/graphql/limites.md): O limite de linhas, o limite de campos e os limites da janela de tempo de uma query.
- [Execute queries GraphQL no Postman](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-graphql-postman.md): Envie a mesma query pelo Postman em vez do curl.
