- Catégories :
Fonctions d’agrégation (estimation de la fréquence), Fonctions de la fenêtre
APPROX_TOP_K¶
Utilise Space-Saving pour renvoyer une approximation des valeurs les plus fréquentes dans les entrées, ainsi que leurs fréquences approximatives.
La sortie est un tableau de tableaux JSON. Dans les tableaux internes, la première entrée est une valeur dans l’entrée et la deuxième entrée correspond à sa fréquence estimée dans l’entrée. Le tableau externe contient k
éléments, triés par fréquence décroissante.
Pour plus d’informations sur APPROX_TOP_K, voir Estimation des valeurs fréquentes.
- Voir aussi :
APPROX_TOP_K_ACCUMULATE , APPROX_TOP_K_COMBINE, APPROX_TOP_K_ESTIMATE
Syntaxe¶
Fonction d’agrégation
APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] )
Fonction de fenêtre
APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] ) OVER ( [ PARTITION BY <expr4> ] )
Arguments¶
expr
: l’expression (par exemple, nom de colonne) pour laquelle vous souhaitez rechercher les valeurs les plus courantes.k
: le nombre de valeurs dont le nombre souhaité doit être approximativement estimé. Par exemple, si vous voulez voir les 10 valeurs les plus courantes, définissezk
sur 10.Si
k
est omis, la valeur par défaut est1
.La valeur maximale est
100000
(100 000). La valeur est automatiquement réduite si les éléments ne peuvent pas être contenus dans la sortie.counters
: il s’agit du nombre maximal de valeurs distinctes pouvant être suivies simultanément pendant le processus d’estimation. Par exemple, sicounters
est défini sur 100000, l’algorithme suit 100 000 valeurs distinctes, en essayant de conserver les 100 000 valeurs les plus fréquentes.Le nombre maximal de
counters
est100000
(100 000).
expr4
Il s’agit de l’expression facultative utilisée pour grouper des lignes dans des partitions.
Notes sur l’utilisation¶
L’approximation est plus précise si le nombre de
counters
est important. Par conséquent, dans la plupart des cas,counters
doit être considérablement plus grand quek
. (Chaque compteur utilise seulement une petite quantité de mémoire, donc augmenter le nombre de compteurs n’est pas coûteux en termes de mémoire.)
Lorsqu’il est utilisé comme une fonction de fenêtre :
Cette fonction ne prend pas en charge :
Sous-clause ORDER BY dans la clause OVER().
Cadres de fenêtre.
Exemples¶
SELECT APPROX_TOP_K(C4) FROM lineitem;
--------------------+
APPROX_TOP_K(C4,3) |
--------------------|
[ |
[ |
1, |
124923 |
], |
[ |
2, |
107093 |
], |
[ |
3, |
89315 |
] |
] |
--------------------+
WITH states AS (
SELECT approx_top_k(C4, 3, 5) AS state
FROM lineitem
)
SELECT value[0]::INT AS value, value[1]::INT AS frequency
FROM states, LATERAL FLATTEN(state);
-------+-----------+
VALUE | FREQUENCY |
-------+-----------|
1 | 124923 |
2 | 107093 |
3 | 89438 |
-------+-----------+