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> ] ] )
Copy

Fonction de fenêtre

APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] ) OVER ( [ PARTITION BY <expr4> ] )
Copy

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éfinissez k sur 10.

    Si k est omis, la valeur par défaut est 1.

    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, si counters 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 est 100000 (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 que k. (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          |
   ]                |
 ]                  |
--------------------+
Copy
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 |
-------+-----------+
Copy