Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTDigestWeighted

quantilesTDigestWeighted

Introducido en: v20.1.0

Calcula simultáneamente varios cuantiles aproximados de una secuencia de datos numéricos en distintos niveles mediante el algoritmo t-digest. La función tiene en cuenta el peso de cada elemento de la secuencia.

Esta función es equivalente a quantileTDigestWeighted, pero permite calcular varios niveles de cuantiles en una sola pasada, lo que resulta más eficiente que llamar a funciones de cuantiles por separado.

El error máximo es del 1 %. El consumo de memoria es log(n), donde n es el número de valores.

El rendimiento de esta función es inferior al de quantiles o quantilesTiming. En cuanto a la relación entre el tamaño del estado y la precisión, esta función es mucho mejor que quantiles.

El resultado depende del orden de ejecución de la consulta y no es determinista.

Sintaxis

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

Parámetros

  • level — Niveles de cuantiles. Uno o más números constantes de coma flotante entre 0 y 1. Recomendamos usar valores de level en el intervalo [0.01, 0.99]. Float*

Argumentos

  • expr — Expresión sobre los valores de la columna que produce tipos de datos numéricos, Date o DateTime. (U)Int* o Float* o Date o DateTime
  • weight — Columna con pesos de los elementos de la secuencia. El peso es el número de apariciones de un valor. UInt*

Valor devuelto

Array de cuantiles aproximados de los niveles especificados en el mismo orden en que se indicaron. Para entradas Date y DateTime, el formato de salida coincide con el formato de entrada. Array(Float32) o Array(Date) o Array(DateTime)

Ejemplos

Cálculo de varios cuantiles ponderados con 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