approx_top_k
statistische functie
Van toepassing op: Databricks SQL Databricks Runtime 10.4 LTS en hoger
Retourneert de k
meest voorkomende itemwaarden in een expr
, samen met de geschatte aantallen.
Syntaxis
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
Deze functie kan ook worden aangeroepen als een vensterfunctie met behulp van de OVER
component.
Argumenten
expr
: Een expressie van TEKENREEKS, BOOLEAANSE WAARDE, DATUM, TIJDSTEMPEL of numeriek type.k
: Een optioneel geheel getal dat groter is dan 0. Alsk
dit niet is opgegeven, wordt deze standaard ingesteld op5
.maxItemsTracked
: Een optionele letterlijke geheel getal groter dan of gelijk aank
. AlsmaxItemsTracked
dit niet is opgegeven, wordt deze standaard ingesteld op10000
.cond
: Een optionele Boole-expressie die de rijen filtert die worden gebruikt voor aggregatie.
Retouren
Resultaten worden geretourneerd als matrix van het type STRUCT, waarbij elke STRUCT een item
veld bevat voor de waarde (met het oorspronkelijke invoertype) en een count
veld (van het type LONG) met het geschatte aantal exemplaren. De matrix wordt gesorteerd op count
aflopend.
De statistische functie retourneert de k
meest voorkomende itemwaarden in een expressie expr
, samen met de geschatte aantallen. De fout in elk aantal kan maximaal 2.0 * numRows / maxItemsTracked
het numRows
totale aantal rijen zijn. Hogere waarden bieden maxItemsTracked
een betere nauwkeurigheid ten koste van een verhoogd geheugengebruik.
Expressies met minder dan maxItemsTracked
afzonderlijke items leveren exacte aantallen items op. Resultaten bevatten NULL
waarden als hun eigen item in de resultaten.
Voorbeelden
> 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}]