適用於:
Databricks SQL
Databricks Runtime 10.4 LTS 和更新版本
傳回 k 中最常出現的前 expr 個項目值及其近似計數。
語法
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
此函式也可以作為視窗函數,使用子句進行叫用。
引數
-
expr:STRING、BOOLEAN、DATE、TIMESTAMP 或數值類型的表達式。 -
k:一個可選的“INTEGER”常值,大於 0。 如果未k指定 ,則預設為5。 -
maxItemsTracked:一個選擇性的整數常值,大於或等於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}]