Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTDigest

quantilesTDigest

引入版本:v1.1.0

使用 t-digest 算法,同时计算数值数据序列在不同级别上的多个近似分位数

此函数等同于 quantileTDigest,但支持在一次遍历中计算多个分位数级别,因此比逐个调用分位数函数更高效。

内存占用为 log(n),其中 n 是值的数量。结果取决于查询的运行顺序,并且具有非确定性。

此函数的性能不如 quantilesquantilesTiming。但在状态大小与精度的比率方面,此函数明显优于 quantiles

语法

quantilesTDigest(level1, level2, ...)(expr)

参数

  • level — 分位数的级别。一个或多个介于 0 到 1 之间的常量浮点数。建议将 level 值设在 [0.01, 0.99] 范围内。Float*

Arguments

  • expr — 基于列值的表达式,其结果为数值数据类型、DateDateTime(U)Int*Float*DateDateTime

返回值

由指定级别对应的近似分位数组成的数组,顺序与级别的指定顺序相同。对于 DateDateTime 输入,输出格式与输入格式一致。Array(Float32)Array(Date)Array(DateTime)

示例

使用 t-digest 计算多个分位数

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