dcount () (fonction d'agrégation)
Voir Compatibilité KQL pour les différences dans l'implémentation.
Renvoie une estimation du nombre de valeurs distinctes prises par une expression scalaire dans le groupe récapitulatif.
La fonction d'agrégation dcount() est principalement utile pour estimer la cardinalité des ensembles volumineux. Il négocie les performances pour la précision et peut renvoyer un résultat qui varie d'une exécution à l'autre. L'ordre des entrées peut avoir un effet sur sa sortie.
Syntaxe
dcount (Expr[, Précision])
Arguments
| Expr | Type | Obligatoire | Descriptif |
|---|---|---|---|
| Expr | chaîne | ✓ | Expression scalaire dont les valeurs distinctes doivent être comptées. |
| Précision | entier | Littéral int facultatif qui définit la précision d'estimation demandée.Voir ci-dessous les valeurs prises en charge. Si elle n'est pas spécifiée, la valeur par défaut 1 est utilisée. |
Précision, si spécifié, contrôle l'équilibre entre la vitesse et la précision.
| Valeur | Descriptif |
|---|---|
| 0 | Le calcul le moins précis et le plus rapide. Erreur 1.6% |
| 1 | La valeur par défaut, qui équilibre la précision et le temps de calcul ; environ 0.8% d'erreur. |
| 2 | Calcul précis et lent ; erreur d'environ 0.4%. |
| 3 | Calcul très précis et lent ; erreur d'environ 0.28%. |
| 4 | Calcul super précis et le plus lent ; environ 0.2% d'erreur. |
Exemple
Renvoie une estimation du nombre de namedistincts.
events
| project name, original_time
| where original_time > ago(5m)
| summarize NameCount=dcount(name)
Les résultats
| NameCount |
|---|
| 2032 |
Exemple
Obtenez 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 de l'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 le temps 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 |
La colonne "nombre d'entrées" correspond au nombre de compteurs d'un octet dans l'implémentation HLL.
L'algorithme inclut des dispositions permettant d'effectuer un comptage parfait (erreur zéro), si la cardinalité définie est suffisamment petite:
- Lorsque le niveau de précision est
1, 1000 valeurs sont renvoyées - Lorsque le niveau d'exactitude est
2, 8000 valeurs sont renvoyées
La borne d'erreur est probabiliste, pas une borne théorique. La valeur est l'écart type de la distribution des erreurs (sigma) et 99.7% des estimations auront une erreur relative inférieure à 3 x sigma.