Fonction d’agrégation approx_top_k
S’applique à : Databricks SQL Databricks Runtime 10.4 LTS et versions ultérieures
Retourne les k
valeurs d’élément les plus fréquentes dans un expr
avec leurs nombres approximatifs.
Syntaxe
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
Cette fonction peut également être appelée en tant que fonction de fenêtre à l’aide de la clause OVER
.
Arguments
expr
: expression de type STRING, BOOLEAN, DATE, TIMESTAMP ou numeric.k
: littéral entier facultatif supérieur à 0. Sik
n’est pas spécifié, la valeur par défaut est5
.maxItemsTracked
: littéral entier facultatif supérieur àk
. SimaxItemsTracked
n’est pas spécifié, la valeur par défaut est10000
.cond
: Expression booléenne facultative qui filtre les lignes utilisées pour l’agrégation.
Retours
Les résultats sont renvoyés sous la forme d’un ARRAY de type STRUCT, où chaque STRUCT contient un champ item
pour la valeur (avec son type d’entrée d’origine) et un champ count
(de type LONG) avec le nombre approximatif d’occurrences. Le tableau est trié par count
ordre décroissant.
La fonction d’agrégation renvoie les valeurs d’éléments k
les plus fréquentes dans une expression expr
, ainsi que leurs nombres approximatifs. L’erreur dans chaque total peut atteindre 2.0 * numRows / maxItemsTracked
où numRows
est le nombre total de lignes. Des valeurs plus élevées de maxItemsTracked
fournissent une meilleure précision au détriment de l’utilisation accrue de la mémoire.
Les expressions qui comportent moins de maxItemsTracked
éléments distincts produiront un total exact d’éléments. Les résultats incluent les valeurs NULL
comme leurs propres éléments.
Exemples
> 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}]