返回指定列中近似最常见值的数组。 生成的数组按值的近似频率降序排序(而不是值本身)。
实现了过滤节省空间算法, 使用基于reduce-and-combine的算法,借鉴并行节省空间。
语法
topK(N)(x)
此函数不提供保证的结果。 在某些情况下,可能会发生错误,并且可能会返回不是最高频的值。
我们建议使用 N < 10
值,N
值越大,性能越低。最大值 N = 65536
。
参数
N
— 要返回的元素数。如果省略该参数,则使用默认值10。
参数
x
– (要计算频次的)值。示例
就拿 OnTime 数据集来说,选择AirlineID
列中出现最频繁的三个。
SELECT topK(3)(AirlineID) AS res FROM ontime
┌─res─────────────────┐ │ [19393,19790,19805] │ └─────────────────────┘
类似于 topK
但需要一个整数类型的附加参数 - weight
。 每个输入都被记入 weight
次频率计算。
语法
topKWeighted(N)(x, weight)
参数
N
— 要返回的元素数。参数
x
– (要计算频次的)值。weight
— 权重。 UInt8类型。返回值
返回具有最大近似权重总和的值数组。
示例
查询:
SELECT topKWeighted(10)(number, number) FROM numbers(1000)
结果:
┌─topKWeighted(10)(number, number)──────────┐ │ [999,998,997,996,995,994,993,992,991,990] │ └───────────────────────────────────────────┘