函数名称:approx_top_k

approx_top_k(col, k, [maxItemsTracked])

功能描述

该函数用于从指定列(

col
col
)中提取出现频率最高的前
k
k
个项目值,并返回它们的近似计数。这是一个基于概率的数据结构实现,因此结果可能会有一定的误差,但在大多数情况下,它能有效地反映数据的分布情况。

参数说明

  • col
    col
    : 输入列,可以是数值类型、字符串类型或嵌套类型。
  • k
    k
    : 需要返回的前
    k
    k
    个最常出现项的数目,需为大于 0 的整数值。
  • maxItemsTracked
    maxItemsTracked
    : 可选参数,用于指定跟踪的最大项目数。默认值为 10000。如果指定的
    maxItemsTracked
    maxItemsTracked
    大于或等于
    k
    k
    ,则使用指定值;否则,将使用
    k
    k
    作为跟踪的最大项目数。

返回结果

函数返回一个结构化数组,每个元素为一个结构体,包含三个字段:

item
item
(原始输入类型的值)、
count
count
(长整型,表示该项出现的近似次数)和
approximation
approximation
(布尔值,表示结果是否为近似值,始终为
true
true
)。数组按照
count
count
字段降序排列。

使用示例

以下示例展示了如何使用

approx_top_k
approx_top_k
函数来获取数据中最常见的项目及其出现次数。

示例 1

SELECT approx_top_k(col, 1) FROM VALUES (7), (7), (6), (9), (8), (7) AS tab(col); +-------------------------+ | approx_top_k(col, 1) | +-------------------------+ | [{"value":7,"count":3}] | +-------------------------+

示例 2

SELECT approx_top_k(col, 2, 100) FROM VALUES (7), (6), (6), (7), (9), (8), (7) AS tab(col); +-----------------------------------------------+ | approx_top_k(col, 2, 100) | +-----------------------------------------------+ | [{"value":7,"count":3},{"value":6,"count":2}] | +-----------------------------------------------+

示例 3

SELECT approx_top_k(col, 3) FROM VALUES ('apple'), ('banana'), ('apple'), ('orange'), ('banana'), ('apple') AS tab(col); +-----------------------------------------------------------------------------------------+ | approx_top_k(col, 3) | +-----------------------------------------------------------------------------------------+ | [{"value":"apple","count":3},{"value":"banana","count":2},{"value":"orange","count":1}] | +-----------------------------------------------------------------------------------------+

注意

  • 由于
    approx_top_k
    approx_top_k
    函数是基于概率的,因此返回的结果可能会有一定的误差。在实际应用中,可以通过调整
    maxItemsTracked
    maxItemsTracked
    参数来平衡精度和性能。
  • 当处理大量数据时,为了提高性能,可以适当降低
    maxItemsTracked
    maxItemsTracked
    的值。但请注意,这可能会影响结果的准确性。

联系我们
预约咨询
微信咨询
电话咨询