approx_top_k
agregační funkce
Platí pro: Databricks SQL Databricks Runtime 10.4 LTS a vyšší
Vrátí nejčastěji k
se vyskytující hodnoty položek společně expr
s jejich přibližnými počty.
Syntaxe
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
Tuto funkci lze také vyvolat jako funkci okna pomocí OVER
klauzule.
Argumenty
expr
: Výraz STRING, BOOLEAN, DATE, TIMESTAMP nebo číselného typu.k
: Volitelný literál INTEGER větší než 0. Pokudk
není zadán, je výchozí5
hodnota .maxItemsTracked
: Volitelný literál INTEGER větší nebo rovenk
. PokudmaxItemsTracked
není zadán, je výchozí10000
hodnota .cond
: Volitelný logický výraz filtrující řádky použité pro agregaci.
Návraty
Výsledky se vrátí jako POLE typu STRUCT, kde každá struktura obsahuje item
pole pro hodnotu (s původním vstupním typem) a count
pole (typu LONG) s přibližným počtem výskytů. Pole se seřadí sestupně count
.
Agregační funkce vrátí k
nejčastěji se vyskytující hodnoty položek ve výrazu expr
spolu s jejich přibližnými počty. Chyba v každém počtu může být až tam, kde 2.0 * numRows / maxItemsTracked
numRows
je celkový počet řádků. Vyšší hodnoty maxItemsTracked
poskytují vyšší přesnost za cenu zvýšeného využití paměti.
Výrazy, které mají méně než maxItemsTracked
odlišné položky, budou poskytovat přesné počty položek. Výsledky obsahují NULL
hodnoty jako vlastní položku ve výsledcích.
Příklady
> 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}]