approx_top_k
összesítő függvény
A következőkre vonatkozik: Databricks SQL Databricks Runtime 10.4 LTS és újabb
A leggyakrabban k
előforduló elemértékeket adja vissza a expr
hozzávetőleges számokkal együtt.
Syntax
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
Ez a függvény ablakfüggvényként is meghívható a OVER
záradék használatával.
Argumentumok
expr
: KARAKTERLÁNC, LOGIKAI ÉRTÉK, DÁTUM, IDŐBÉLYEG vagy numerikus típus kifejezése.k
: 0-nál nagyobb opcionális EGÉSZ SZÁM literál. Hak
nincs megadva, az alapértelmezés szerint a .5
maxItemsTracked
: Egy nem kötelező egész szám literál nagyobb vagy egyenlő.k
HamaxItemsTracked
nincs megadva, az alapértelmezés szerint a .10000
cond
: Nem kötelező logikai kifejezés, amely az összesítéshez használt sorokat szűri.
Válaszok
Az eredmények STRUCT típusú tömbként jelennek meg, ahol minden STRUCT tartalmaz egy item
mezőt az értékhez (az eredeti bemeneti típussal) és egy count
(LONG típusú) mezőt az előfordulások hozzávetőleges számával. A tömb csökkenő sorrendben van rendezve count
.
Az aggregátumfüggvény egy kifejezés expr
leggyakoribb k
elemértékeit adja vissza a hozzávetőleges számukkal együtt. Az egyes számokban a hiba akár a sorok teljes számának is lehet 2.0 * numRows / maxItemsTracked
numRows
. A magasabb értékek maxItemsTracked
jobb pontosságot biztosítanak a megnövekedett memóriahasználat költségén.
A különböző elemeknél maxItemsTracked
kevesebbel rendelkező kifejezések pontos tételszámokat eredményeznek. Az eredmények magukban foglalják NULL
az értékeket saját elemként az eredményekben.
Példák
> 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}]