dcount() (fonction d’agrégation)

Retourne une estimation du nombre de valeurs distinctes prises par une expression scalaire dans le groupe de résumé.

Notes

La fonction d’agrégation dcount() est principalement utile pour estimer la cardinalité des jeux énormes. Elle privilégie la précision par rapport aux performances, et peut retourner un résultat variable d’une exécution à l’autre. L’ordre des entrées peut avoir une incidence sur sa sortie.

Syntaxe

dcount(Expr[,Precisiony])

Arguments

  • Expr : expression scalaire dont les différentes valeurs doivent être comptées.
  • Précision : littéral int facultatif qui définit l’exactitude d’estimation demandée. Pour connaître les valeurs prises en charge, voyez ci-dessous. Si la valeur n’est pas spécifiée, la valeur par défaut 1 est utilisée.

Retours

Retourne une estimation du nombre de valeurs distinctes d’ Expr dans le groupe.

Exemple

PageViewLog | summarize countries=dcount(country) by continent

D count.

Obtient un nombre exact de valeurs distinctes de V regroupées par G.

T | summarize by V, G | summarize count() by G

Ce calcul nécessite une grande quantité de mémoire interne, car les valeurs distinctes de V sont multipliées par le nombre de valeurs distinctes de G. Cela peut entraîner des erreurs de mémoire ou des temps d’exécution importants. dcount()offre une alternative rapide et fiable :

T | summarize dcount(V) by G | count

Exactitude d’estimation

La fonction d’agrégation dcount() utilise une variante de l’algorithme HyperLogLog (HLL) qui effectue une estimation stochastique de la cardinalité définie. L’algorithme fournit un « bouton » qui peut être utilisé pour équilibrer la précision et la durée d’exécution par taille de mémoire :

Précision Erreur (%) Nombre d’entrées
0 1.6 212
1 0,8 214
2 0.4 216
3 0,28 217
4 0.2 218

Notes

La colonne « Nombre d’entrées » indique le nombre de compteurs sur 1 octet dans l’implémentation de HLL.

L’algorithme inclut certaines dispositions pour effectuer un décompte parfait (zéro erreur) si la cardinalité définie est suffisamment petite :

  • Lorsque le niveau d’exactitude est 1, 1 000 valeurs sont retournées
  • Lorsque le niveau d’exactitude est 2, 8 000 valeurs sont retournées

La limite d’erreur est probabiliste, non théorique. La valeur est l’écart type de distribution des erreurs (sigma), et 99,7 % des estimations auront une erreur relative inférieure à 3 x sigma.

L’illustration suivante montre la fonction de distribution des probabilités de l’erreur d’estimation relative, en pourcentage, pour tous les paramètres d’exactitude pris en charge :

hll error distribution.