Distribution

Distribution contém estatísticas resumidas de uma população de valores. Ele pode conter um histograma que representa a distribuição desses valores em um conjunto de buckets.

As estatísticas resumidas são a contagem, média, soma do desvio quadrático da média, o mínimo e o máximo do conjunto de população de valores. O histograma se baseia em uma sequência de buckets e fornece uma contagem dos valores que se enquadram em cada bucket. Os limites dos buckets são fornecidos explicitamente ou por fórmulas para buckets de larguras fixas ou exponencialmente crescentes.

Embora não seja proibido, geralmente é uma má ideia incluir valores não finitos (infinidades ou NaNs) na população de valores, já que isso vai tornar 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. Não podem ser negativas. Esse valor precisará ser igual à soma dos valores em bucketCounts se um histograma for fornecido.

mean

number

A média aritmética dos valores na população. Se count for zero, esse campo precisará ser zero.

sumOfSquaredDeviation

number

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

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

Knuth, "The Art of Computer Programming", vol. 2, página 232, 3a edição descreve o método de Welford para acumular essa soma em uma passagem.

Se count for zero, esse campo precisará ser zero.

range

object (Range)

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

bucketOptions

object (BucketOptions)

Define os limites do bucket do histograma. Se a distribuição não tiver um histograma, omita esse campo.

bucketCounts[]

string (int64 format)

O número de valores em cada bucket do histograma, conforme descrito em bucketOptions. Se a distribuição não tiver um histograma, omita esse campo. Se houver um histograma, a soma dos valores em bucketCounts precisará ser igual ao valor no campo count da distribuição.

Se presente, bucketCounts precisa conter N valores, em que N é o número de buckets especificados em bucketOptions. Se você fornecer menos de N valores, os valores restantes serão presumidos como 0.

A ordem dos valores em bucketCounts segue os esquemas de numeração de bucket descritos para os três tipos de bucket. O primeiro valor precisa ser a contagem do bucket de subfluxo (número 0). Os próximos valores N-2 são as contagens para buckets finitos (de 1 a N-2). O valor N em bucketCounts é a contagem do bucket flutuante (número N-1).

exemplars[]

object (Exemplar)

Precisa estar em 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 de população.

BucketOptions

BucketOptions descreve os limites do bucket usados para criar um histograma para a distribuição. Os buckets podem estar em uma sequência linear, exponencial ou cada bucket pode ser especificado explicitamente. BucketOptions não inclui o número de valores em cada bucket.

Um bucket tem um limite inferior inclusivo e um limite superior exclusivo para os valores que são contados para aquele bucket. O limite superior de um bucket precisa ser estritamente maior que o limite inferior. A sequência de N buckets para uma distribuição consiste em um bucket de subfluxo (número 0), zero ou mais buckets finitos (de 1 a N - 2) e um bucket de sobrefluxo (número N - 1). Os buckets são contíguos: o limite inferior do bucket i (i > 0) é o mesmo que o limite superior do bucket i - 1. Os buckets abrangem toda a faixa de valores finitos: o limite inferior do bucket de subfluxo é -infinito e o limite superior do bucket de sobrefluxo é +infinito. Os buckets finitos são assim chamados 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. Exatamente um desses três campos deve ser definido. options pode ser apenas de um dos tipos a seguir:
linearBuckets

object (Linear)

O bucket linear.

exponentialBuckets

object (Exponential)

Os buckets exponenciais.

explicitBuckets

object (Explicit)

Os buckets explícitos.

Linear

Especifica uma sequência linear de buckets com a mesma largura (exceto transbordamento e subfluxo). Cada bucket representa uma incerteza absoluta e constante sobre o valor específico dele.

numFiniteBuckets + 2 (= N) buckets. O bucket 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

Precisa ser maior que 0.

width

number

Precisa ser maior que 0.

offset

number

Limite inferior do primeiro bucket.

Exponencial

Especifica uma sequência exponencial de buckets com largura proporcional ao valor do limite inferior. Cada bucket representa uma incerteza relativa constante sobre um valor específico no bucket.

numFiniteBuckets + 2 (= N) buckets. O bucket i tem os seguintes limites:

Limite superior (0 <= i < N-1): escala * (fator_de_crescimento ^ i).

Limite inferior (1 <= i < N): escala * (fator_de_crescimento ^ (i - 1)).

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

integer

Precisa ser maior que 0.

growthFactor

number

Precisa ser maior que 1.

scale

number

Precisa ser maior que 0.

Explícito

Especifica um conjunto de buckets com larguras arbitrárias.

size(bounds) + 1 (= N) buckets. O bucket i tem os seguintes limites:

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

O campo bounds precisa conter pelo menos um elemento. Se bounds tiver apenas um elemento, não haverá buckets finitos, e esse único elemento será o limite comum dos buckets de sobrefluxo e subfluxo.

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

number

Os valores precisam aumentar monotonicamente.

Exemplar

Exemplos são pontos de exemplo que podem ser usados para anotar valores de distribuição agregados. Eles são metadados que fornecem informações sobre um valor específico adicionado a um bucket de distribuição, como um ID de trace ativo quando um valor foi adicionado. Eles podem conter mais informações, como valores de exemplo, carimbos de data/hora, origem etc.

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

number

Valor do ponto do exemplo. Esse valor determina a qual bucket o exemplo pertence.

timestamp

string (Timestamp format)

O horário de observação (amostragem) do valor acima.

attachments[]

object

Informações contextuais sobre o valor de exemplo. Os exemplos são:

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

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

Rótulos descartados durante a agregação: type.googleapis.com/google.monitoring.v3.DroppedLabels

Pode haver apenas um anexo de qualquer tipo de mensagem em um único exemplo, e isso é aplicado pelo sistema.