approx_top_k
mängdfunktion
Gäller för: Databricks SQL Databricks Runtime 10.4 LTS och senare
Returnerar de vanligaste k
objektvärdena i en expr
tillsammans med deras ungefärliga antal.
Syntax
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
Den här funktionen kan också anropas som en fönsterfunktion med hjälp av OVER
-satsen.
Argument
expr
: Ett uttryck av typen STRING, BOOLEAN, DATE, TIMESTAMP eller numerisk.k
: En valfri INTEGER-literal som är större än 0. Omk
inte anges är standardvärdet5
.maxItemsTracked
: En valfri INTEGER-literal som är större än eller lika medk
. OmmaxItemsTracked
inte anges är standardvärdet10000
.cond
: Ett valfritt booleskt uttryck som filtrerar de rader som används för aggregering.
Returer
Resultaten returneras som en MATRIS av typen STRUCT, där varje STRUCT innehåller ett item
fält för värdet (med dess ursprungliga indatatyp) och ett count
fält (av typen LONG) med det ungefärliga antalet förekomster. Matrisen sorteras efter count
fallande.
Aggregeringsfunktionen returnerar de vanligaste k
objektvärdena i ett uttryck expr
tillsammans med deras ungefärliga antal. Felet i varje antal kan vara upp till 2.0 * numRows / maxItemsTracked
där numRows
är det totala antalet rader. Högre värden för maxItemsTracked
ger bättre noggrannhet på bekostnad av ökad minnesanvändning.
Uttryck som har färre än maxItemsTracked
distinkta objekt ger exakta antal objekt. Resultaten innehåller NULL
värden som sitt eget objekt i resultatet.
Exempel
> 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}]