Distribution

Distribution contém estatísticas resumidas para uma população de valores. Opcionalmente, contém um histograma que representa a distribuição desses valores num conjunto de contentores.

As estatísticas de resumo são a contagem, a média, a soma do desvio ao quadrado da média, o mínimo e o máximo do conjunto de valores da população. O histograma baseia-se numa sequência de segmentos e apresenta uma contagem de valores que se enquadram em cada segmento. Os limites dos grupos são fornecidos de forma explícita ou através de fórmulas para grupos de larguras fixas ou exponencialmente crescentes.

Embora não seja proibido, geralmente, é uma má ideia incluir valores não finitos (infinitos ou NaNs) na população de valores, uma vez que isto torna os campos mean e sumOfSquaredDeviation sem significado.

Representação JSON
{
  "count": string,
  "mean": number,
  "sumOfSquaredDeviation": number,
  "range": {
    object (Range)
  },
  "bucketOptions": {
    object (BucketOptions)
  },
  "bucketCounts": [
    string
  ],
  "exemplars": [
    {
      object (Exemplar)
    }
  ]
}
Campos
count

string (int64 format)

O número de valores na população. Tem de ser não negativo. Este valor tem de ser igual à soma dos valores em bucketCounts se for fornecido um histograma.

mean

number

A média aritmética dos valores na população. Se count for zero, este campo tem de ser zero.

sumOfSquaredDeviation

number

A soma dos desvios quadrados da média dos valores na população. Para os valores x_i, isto é:

Sum[i=1..n]((x_i - mean)^2)

Knuth, "The Art of Computer Programming", Vol. 2, página 232, 3.ª edição, descreve o método de Welford para acumular esta soma numa única passagem.

Se count for zero, este campo tem de ser zero.

range

object (Range)

Se especificado, contém o intervalo dos valores da população. O campo não pode estar presente se o valor de count for zero.

bucketOptions

object (BucketOptions)

Define os limites dos intervalos do histograma. Se a distribuição não contiver um histograma, omita este campo.

bucketCounts[]

string (int64 format)

O número de valores em cada segmento do histograma, conforme descrito em bucketOptions. Se a distribuição não tiver um histograma, omita este campo. Se existir um histograma, a soma dos valores em bucketCounts tem de ser igual ao valor no campo count da distribuição.

Se estiver presente, bucketCounts deve conter N valores, em que N é o número de grupos especificados em bucketOptions. Se fornecer menos de N valores, considera-se que os valores restantes são 0.

A ordem dos valores em bucketCounts segue os esquemas de numeração de contentores descritos para os três tipos de contentores. O primeiro valor tem de ser a contagem do intervalo de underflow (número 0). Os N-2 valores seguintes são as contagens dos intervalos finitos (número 1 a N-2). O N-ésimo valor em bucketCounts é a contagem do recipiente de overflow (número N-1).

exemplars[]

object (Exemplar)

Tem de estar por ordem crescente do campo value.

Intervalo

O intervalo dos valores da população.

Representação JSON
{
  "min": number,
  "max": number
}
Campos
min

number

O mínimo dos valores da população.

max

number

O máximo dos valores da população.

BucketOptions

BucketOptions descreve os limites dos contentores usados para criar um histograma para a distribuição. Os intervalos podem estar numa sequência linear, numa sequência exponencial ou cada intervalo pode ser especificado explicitamente. BucketOptions não inclui o número de valores em cada segmento.

Um segmento tem um limite inferior inclusivo e um limite superior exclusivo para os valores que são contabilizados para esse segmento. O limite superior de um grupo tem de ser estritamente superior ao limite inferior. A sequência de N contentores para uma distribuição consiste num contentor de limite inferior (número 0), zero ou mais contentores finitos (número 1 a N - 2) e um contentor de limite superior (número N - 1). Os intervalos são contíguos: o limite inferior do intervalo i (i > 0) é igual ao limite superior do intervalo i - 1. Os segmentos abrangem todo o intervalo de valores finitos: o limite inferior do segmento de underflow é -infinito e o limite superior do segmento de overflow é +infinito. Os intervalos finitos são assim denominados porque ambos os limites são finitos.

Representação JSON
{

  // Union field options can be only one of the following:
  "linearBuckets": {
    object (Linear)
  },
  "exponentialBuckets": {
    object (Exponential)
  },
  "explicitBuckets": {
    object (Explicit)
  }
  // End of list of possible types for union field options.
}
Campos
Campo de união options. Tem de definir exatamente um destes três campos. options só pode ser uma das seguintes opções:
linearBuckets

object (Linear)

O intervalo linear.

exponentialBuckets

object (Exponential)

Os intervalos exponenciais.

explicitBuckets

object (Explicit)

Os contentores explícitos.

Linear

Especifica uma sequência linear de grupos que têm todos a mesma largura (exceto o excesso e a falta). Cada contentor representa uma incerteza absoluta constante no valor específico no contentor.

Existem numFiniteBuckets + 2 (= N) contentores. O intervalo i tem os seguintes limites:

Limite superior (0 <= i < N-1): deslocamento + (largura * i).

Limite inferior (1 <= i < N): deslocamento + (largura * (i - 1)).

Representação JSON
{
  "numFiniteBuckets": integer,
  "width": number,
  "offset": number
}
Campos
numFiniteBuckets

integer

Tem de ser superior a 0.

width

number

Tem de ser superior a 0.

offset

number

Limite inferior do primeiro grupo.

Exponencial

Especifica uma sequência exponencial de segmentos que têm uma largura proporcional ao valor do limite inferior. Cada contentor representa uma incerteza relativa constante num valor específico no contentor.

Existem numFiniteBuckets + 2 (= N) contentores. O intervalo i tem os seguintes limites:

Limite superior (0 <= i < N-1): scale * (growthFactor ^ i).

Limite inferior (1 <= i < N): scale * (growthFactor ^ (i - 1)).

Representação JSON
{
  "numFiniteBuckets": integer,
  "growthFactor": number,
  "scale": number
}
Campos
numFiniteBuckets

integer

Tem de ser superior a 0.

growthFactor

number

Tem de ser superior a 1.

scale

number

Tem de ser superior a 0.

Explícito

Especifica um conjunto de intervalos com larguras arbitrárias.

Existem size(bounds) + 1 (= N) contentores. O intervalo i tem os seguintes limites:

Limite superior (0 <= i < N-1): bounds[i] Limite inferior (1 <= i < N); bounds[i - 1]

O campo bounds tem de conter, pelo menos, um elemento. Se bounds tiver apenas um elemento, não existem intervalos finitos e esse único elemento é o limite comum dos intervalos de excesso e de falta.

Representação JSON
{
  "bounds": [
    number
  ]
}
Campos
bounds[]

number

Os valores têm de aumentar monotonicamente.

Exemplar

Os exemplares são pontos de exemplo que podem ser usados para anotar valores de distribuição agregados. São metadados que fornecem informações sobre um valor específico adicionado a um depósito de distribuição, como um ID de rastreio que estava ativo quando foi adicionado um valor. Podem conter mais informações, como valores de exemplo e datas/horas, origem, etc.

Representação JSON
{
  "value": number,
  "timestamp": string,
  "attachments": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Campos
value

number

Valor do ponto exemplar. Este valor determina a que grupo pertence o exemplo.

timestamp

string (Timestamp format)

A hora de observação (amostragem) do valor acima.

Usa RFC 3339, em que o resultado gerado é sempre normalizado em Z e usa 0, 3, 6 ou 9 dígitos fracionários. Também são aceites desvios diferentes de "Z". Exemplos: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" ou "2014-10-02T15:01:23+05:30".

attachments[]

object

Informações contextuais sobre o valor de exemplo. Exemplos:

Trace: type.googleapis.com/google.monitoring.v3.SpanContext

String literal: type.googleapis.com/google.protobuf.StringValue

Etiquetas ignoradas durante a agregação: type.googleapis.com/google.monitoring.v3.DroppedLabels

Pode existir apenas um anexo de qualquer tipo de mensagem num único exemplo, e isto é aplicado pelo sistema.

Um objeto que contém campos de um tipo arbitrário. Um campo adicional "@type" contém um URI que identifica o tipo. Exemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.