You need to enable JavaScript to run this app.
导航

TopK

最近更新时间2022.12.19 15:11:00

首次发布时间2022.12.19 15:11:00

topK

返回指定列中近似最常见值的数组。 生成的数组按值的近似频率降序排序(而不是值本身)。

实现了过滤节省空间算法, 使用基于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] │
└─────────────────────┘
topKWeighted

类似于 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] │
└───────────────────────────────────────────┘