approx_top_k
聚合函数
适用于: Databricks SQL Databricks Runtime 10.4 LTS 及更高版本
返回 expr
中最常出现的前 k
个项目值及其近似计数。
语法
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
还可以使用 OVER
子句将此函数作为窗口函数调用。
参数
expr
:STRING、BOOLEAN、DATE、TIMESTAMP 或数值类型的表达式。k
:大于 0 的可选整数文本。 如果未指定k
,则默认为5
。maxItemsTracked
:大于或等于k
的可选 INTEGER 字面值。 如果未指定maxItemsTracked
,则默认为10000
。cond
:一个可选的布尔表达式,可筛选用于聚合的行。
返回
结果以 STRUCT 类型的 ARRAY 形式返回,其中每个 STRUCT 包含值的 item
字段(具有其原始输入类型)和 count
字段(LONG 类型)以及出现的近似次数。 数组按 count
降序排序。
此聚合函数返回表达式 expr
中最常出现的前 k
个项目值及其近似计数。 每个计数的错误最高可以为 2.0 * numRows / maxItemsTracked
,其中 numRows
是总行数。 较高的 maxItemsTracked
值可提供更好的准确性,但会增加内存使用量。
具有少于 maxItemsTracked
个不同项目的表达式将产生准确的项目计数。 结果在结果中包含 NULL
值作为它们自己的项目。
示例
> SELECT approx_top_k(expr) FROM VALUES (0), (0), (1), (1), (2), (3), (4), (4) AS tab(expr);
[{'item':4,'count':2},{'item':1,'count':2},{'item':0,'count':2},{'item':3,'count':1},{'item':2,'count':1}]
> SELECT approx_top_k(expr, 2) FROM VALUES 'a', 'b', 'c', 'c', 'c', 'c', 'd', 'd' AS tab(expr);
[{'item':'c','count',4},{'item':'d','count':2}]
> SELECT approx_top_k(expr, 10, 100) FROM VALUES (0), (1), (1), (2), (2), (2) AS tab(expr);
[{'item':2,'count':3},{'item':1,'count':2},{'item':0,'count':1}]