quantileDeterministic
Introduced in: v1.1.0
计算数值数据序列的近似分位数。
此函数采用水库采样,水库大小最多为 8192,并使用确定性采样算法。
结果是确定性的。
如需获取精确分位数,请使用 quantileExact 函数。
当在一个查询中使用多个不同级别的 quantile* 函数时,其内部状态不会合并 (也就是说,查询效率会低于原本可能达到的水平) 。
在这种情况下,请使用 quantiles 函数。
Syntax
quantileDeterministic(level)(expr, determinator)别名: medianDeterministic
参数
level— 可选。分位数的级别。取值为 0 到 1 之间的常量浮点数。建议将level设为[0.01, 0.99]范围内的值。默认值:0.5。当level=0.5时,该函数计算中位数。Float*
参数说明
expr— 基于列值计算,结果为数值 data types、Date或DateTime的 expression。(U)Int*或Int128或UInt128或Int256或UInt256或Float*或Date或DateTimedeterminator— 在蓄水池 sampling 算法中,使用其哈希值代替随机数生成器,以使 sampling 结果具有 deterministic 性。determinator可以是任意 deterministic 的正数,例如用户 ID 或事件 ID。如果同一个determinator值出现过于频繁,函数将无法正确工作。UInt*
返回值
返回指定级别的近似分位数。Float64 或 Date 或 DateTime
示例
计算确定性分位数
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);
SELECT quantileDeterministic(val, 1) FROM t;┌─quantileDeterministic(val, 1)─┐
│ 1.5 │
└───────────────────────────────┘另请参阅