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 より大きい省略可能な INTEGER リテラル。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}]