函数名称: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 的值。但请注意,这可能会影响结果的准确性。

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