共用方式為


approx_top_k 聚合函數

適用於:核取記號為「是」 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}]