函数名称:approx_top_k
approx_top_k(col, k, [maxItemsTracked])
功能描述
该函数用于从指定列(col)中提取出现频率最高的前 k 个项目值,并返回它们的近似计数。这是一个基于概率的数据结构实现,因此结果可能会有一定的误差,但在大多数情况下,它能有效地反映数据的分布情况。
参数说明
col
: 输入列,可以是数值类型、字符串类型或嵌套类型。
k
: 需要返回的前 k 个最常出现项的数目,需为大于 0 的整数值。
maxItemsTracked
: 可选参数,用于指定跟踪的最大项目数。默认值为 10000。如果指定的 maxItemsTracked
大于或等于 k,则使用指定值;否则,将使用 k 作为跟踪的最大项目数。
返回结果
函数返回一个结构化数组,每个元素为一个结构体,包含三个字段:item
(原始输入类型的值)、count
(长整型,表示该项出现的近似次数)和 approximation
(布尔值,表示结果是否为近似值,始终为 true)。数组按照 count
字段降序排列。
使用示例
以下示例展示了如何使用 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
函数是基于概率的,因此返回的结果可能会有一定的误差。在实际应用中,可以通过调整 maxItemsTracked
参数来平衡精度和性能。
- 当处理大量数据时,为了提高性能,可以适当降低
maxItemsTracked
的值。但请注意,这可能会影响结果的准确性。