跳转到主内容
跳转到主内容

topK

topK

引入版本:v1.1

返回一个数组,其中包含指定列中近似出现次数最多的值。结果数组按照值的近似出现频率降序排序(而不是按值本身排序)。

实现了用于 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 的最大值为 65536UInt64
  • load_factor — 可选。用于定义为存储值预留的单元格数量。如果 uniq(column) > N * load_factor,则 topK 函数的结果是近似值。默认值:3。UInt64
  • counts — 可选。定义结果中是否应包含近似计数和误差值。Bool

参数

  • column — 要查找其最频繁值的列名。String

返回值

返回一个包含近似最频繁值的数组,按近似频率的降序排序。Array

示例

使用示例

SELECT topK(3)(AirlineID) AS res
FROM ontime;
┌─res─────────────────┐
│ [19393,19790,19805] │
└─────────────────────┘

另请参阅