approx_top_k 聚合函數

適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 10.4 LTS 和更新版本

k 回 中 expr 最常發生的專案值及其近似計數。

語法

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}]