Catégories :

Fonctions d’agrégation (estimation de la cardinalité), Fonctions de la fenêtre

APPROX_COUNT_DISTINCT

Utilise HyperLogLog pour obtenir une approximation de la cardinalité distincte de l’entrée (c’est-à-dire que HLL(col1, col2, ... ) renvoie une approximation de COUNT(DISTINCT col1, col2, ... )).

Pour plus d’informations sur les HyperLogLog, voir Le nombre de valeurs distinctes..

Alias :

HLL.

Voir aussi :

HLL_ACCUMULATE , HLL_COMBINE , HLL_ESTIMATE

Syntaxe

Fonction d’agrégation

APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1>  [ , ... ] )

APPROX_COUNT_DISTINCT(*)
Copy

Fonction de fenêtre

APPROX_COUNT_DISTINCT( [ DISTINCT ] <expr1>  [ , ... ] ) OVER ( [ PARTITION BY <expr2> ] )

APPROX_COUNT_DISTINCT(*) OVER ( [ PARTITION BY <expr2> ] )
Copy

Arguments

expr1

C’est l’expression pour laquelle vous voulez connaître le nombre de valeurs distinctes.

expr2

Il s’agit de l’expression facultative utilisée pour grouper des lignes dans des partitions.

Renvoie

Le type de données de la valeur renvoyée est INTEGER.

Notes sur l’utilisation

  • Bien que le calcul soit une approximation, il est déterministe. Lorsque cette fonction est appelée avec les mêmes données d’entrée, elle renvoie les mêmes résultats.

  • Pour plus d’informations sur les valeurs NULL et les fonctions d’agrégation, voir Fonctions d’agrégation et valeurs NULL.

  • Dans le cas d’une utilisation en tant que fonction de fenêtre :

    • Cette fonction ne prend pas en charge :

      • Sous-clause ORDER BY dans la clause OVER().

      • Cadres de fenêtre.

Exemples

Cet exemple montre comment utiliser APPROX_COUNT_DISTINCT et son alias HLL. Cet exemple appelle COUNT(DISTINCT i) et APPROX_COUNT_DISTINCT(i) pour souligner que les résultats ne correspondent pas toujours exactement.

Le résultat exact de la requête suivante peut varier car APPROX_COUNT_DISTINCT() renvoie une approximation et non une valeur exacte.

SELECT COUNT(i), COUNT(DISTINCT i), APPROX_COUNT_DISTINCT(i), HLL(i)
  FROM sequence_demo;
+----------+-------------------+--------------------------+--------+
| COUNT(I) | COUNT(DISTINCT I) | APPROX_COUNT_DISTINCT(I) | HLL(I) |
|----------+-------------------+--------------------------+--------|
|     1024 |              1024 |                     1007 |   1007 |
+----------+-------------------+--------------------------+--------+
Copy