Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTDigestWeighted

quantilesTDigestWeighted

Introduzido em: v20.1.0

Calcula simultaneamente vários quantis aproximados de uma sequência de dados numéricos em diferentes níveis usando o algoritmo t-digest. A função leva em conta o peso de cada elemento da sequência.

Esta função é equivalente a quantileTDigestWeighted, mas permite calcular vários níveis de quantil em uma única passagem, o que é mais eficiente do que chamar funções de quantil individualmente.

O erro máximo é de 1%. O consumo de memória é log(n), em que n é o número de valores.

O desempenho dessa função é inferior ao de quantiles ou quantilesTiming. Em termos da razão entre o tamanho do State e a precisão, esta função é muito melhor que quantiles.

O resultado depende da ordem de execução da consulta e é não determinístico.

Sintaxe

quantilesTDigestWeighted(level1, level2, ...)(expr, weight)

Parâmetros

  • level — Níveis dos quantis. Um ou mais números de ponto flutuante constantes de 0 a 1. Recomendamos usar valores de level no intervalo [0.01, 0.99]. Float*

Argumentos

  • expr — Expressão sobre os valores da coluna que resulta em tipos de dados numéricos, Date ou DateTime. (U)Int* ou Float* ou Date ou DateTime
  • weight — Coluna com os pesos dos elementos da sequência. O peso é o número de ocorrências de um valor. UInt*

Valor retornado

Um array de quantis aproximados dos níveis especificados, na mesma ordem em que eles foram informados. Para entradas Date e DateTime, o formato de saída corresponde ao formato de entrada. Array(Float32) ou Array(Date) ou Array(DateTime)

Exemplos

Como calcular vários quantis ponderados com t-digest

SELECT quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1) FROM numbers(100);
┌─quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1)─┐
│ [24,49,74]                                           │
└──────────────────────────────────────────────────────┘
Navigation