approx_top_k
agregační funkce
Platí pro: Databricks SQL
Databricks Runtime 10.4 LTS a vyšší
Vrátí nejvyšší k
nejčastěji se vyskytující hodnoty položek v expr
spolu 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í klauzule OVER
.
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 vrací jako pole typu STRUCT, kde každá struktura obsahuje pole item
pro hodnotu (s původním vstupním typem) a pole count
(typu LONG) s přibližným počtem výskytů. Pole se seřadí sestupně count
.
Agregační funkce vrátí nejvyšší 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čítání může dosahovat až 2.0 * numRows / maxItemsTracked
, kde 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 zahrnují hodnoty NULL
jako samostatnou 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}]