Share via


Fonction d’agrégation approx_top_k

S’applique à :coche marquée oui Databricks SQL coche pour oui 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. Si k n’est pas spécifié, la valeur par défaut est 5.
  • maxItemsTracked : littéral entier facultatif supérieur à k. Si maxItemsTracked n’est pas spécifié, la valeur par défaut est 10000.
  • 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 / maxItemsTrackednumRows 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}]