topK
返回一个数组,其中包含指定列中近似最频繁的值。结果数组按值的近似频率降序排序(而不是按值本身排序)。
实现了用于分析 TopK 的 Filtered Space-Saving 算法,该算法基于 Parallel Space Saving 中的 reduce-and-combine 算法。
topK(N)(column)
topK(N, load_factor)(column)
topK(N, load_factor, 'counts')(column)
此函数不提供保证结果。在某些情况下,可能会发生错误,并且它可能会返回频繁值,但这些值可能不是最频繁的值。
我们建议使用 N < 10
的值;对于较大的 N
值,性能会降低。N
的最大值为 65536
。
参数
N
— 要返回的元素数量。可选。默认值:10。load_factor
— 定义为值保留的单元格数量。如果 uniq(column) > N * load_factor,则 topK 函数的结果将是近似值。可选。默认值:3。counts
— 定义结果是否应包含近似计数和误差值。
参数
column
— 要计算频率的值。
示例
使用 OnTime 数据集,并选择 AirlineID
列中最常出现的三种值。
SELECT topK(3)(AirlineID) AS res
FROM ontime
┌─res─────────────────┐
│ [19393,19790,19805] │
└─────────────────────┘
另请参阅