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
:選擇性的 INTEGER 常值大於 0。 如果未k
指定 ,則預設為5
。maxItemsTracked
:選擇性 INTEGER 常值大於或等於k
。 如果未maxItemsTracked
指定 ,則預設為10000
。cond
:選擇性布爾表示式,篩選用於匯總的數據列。
傳回
結果會以 STRUCT 類型的 ARRAY 傳回,其中每個 STRUCT 都包含 item
值的欄位(其原始輸入類型),以及 count
具有近似出現次數的欄位(類型 LONG)。 陣列會依 count
遞減排序。
聚合函數會 k
傳回表達式 expr
中最常發生的專案值及其近似計數。 每個計數中的錯誤可能最多 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}]