dcount () (Aggregationsfunktion)
Unterschiede in der Implementierung finden Sie unter KQL-Kompatibilität .
Gibt eine Schätzung für die Anzahl unterschiedlicher Werte zurück, die von einem skalaren Ausdruck in der Zusammenfassungsgruppe verwendet werden.
Die Aggregationsfunktion dcount() ist in erster Linie für die Schätzung der Kardinalität von großen Sets nützlich. Die Leistung wird auf Genauigkeit überprüft und es kann ein Ergebnis zurückgegeben werden, das je nach Ausführung unterschiedlich ist. Die Reihenfolge der Eingaben kann sich auf die Ausgabe auswirken.
Syntax
dcount (Ausdruck[, Genauigkeit])
Argumente
| Ausdr | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| Ausdr | Zeichenfolge | ✓ | Ein skalarer Ausdruck, dessen unterschiedliche Werte gezählt werden sollen. |
| Genauigkeit | int | Ein optionales int -Literal, das die angeforderte Schätzgenauigkeit definiert.Unterstützte Werte finden Sie weiter unten. Erfolgt keine Angabe, wird der Standardwert 1 verwendet. |
Genauigkeit, sofern angegeben, steuert die Balance zwischen Geschwindigkeit und Genauigkeit.
| Wert | Beschreibung |
|---|---|
| 0 | Die am wenigsten genaue und schnellste Berechnung. 1.6% Fehler |
| 1 | Der Standardwert, der Genauigkeit und Berechnungszeit ausgleicht; ungefähr 0.8% Fehler. |
| 2 | Genaue und langsame Berechnung; ungefähr 0.4% Fehler |
| 3 | Extragenaue und langsame Berechnung; ungefähr 0.28% Fehler |
| 4 | Supergenaue und langsamste Berechnung; ungefähr 0.2% Fehler |
Beispiel
Gibt eine Schätzung der Anzahl unterschiedlicher namezurück.
events
| project name, original_time
| where original_time > ago(5m)
| summarize NameCount=dcount(name)
Die Ergebnisse
| NameCount |
|---|
| 2032 |
Beispiel
Ruft eine exakte Anzahl unterschiedlicher Werte von V gruppiert nach Gab.
T | summarize by V, G | summarize count() by G
Diese Berechnung erfordert eine große Menge an internem Speicher, da unterschiedliche Werte von V mit der Anzahl der unterschiedlichen Werte von Gmultipliziert werden. Dies kann zu Speicherfehlern oder großen Ausführungszeiten führen. dcount()bietet eine schnelle und zuverlässige Alternative:
T | summarize dcount(V) by G | count
Schätzgenauigkeit
Die Aggregatfunktion dcount() verwendet eine Variante des Algorithmus HyperLogLog (HLL), der eine stochastische Schätzung der Set-Kardinalität durchführt. Der Algorithmus stellt einen "Regler" bereit, mit dem Genauigkeit und Ausführungszeit pro Speichergröße ausgeglichen werden können:
| Genauigkeit | Fehler (%) | Anzahl Einträge |
|---|---|---|
| 0 | 1.6 | 212 |
| 1 | 0.8 | 214 |
| 2 | 0.4 | 216 |
| 3 | 0.28 | 217 |
| 4 | 0.2 | 218 |
Die Spalte "Eintragsanzahl" ist die Anzahl der 1-Byte-Zähler in der HLL-Implementierung.
Der Algorithmus enthält einige Bestimmungen für eine perfekte Zählung (Nullfehler), wenn die Satzkardinalität klein genug ist:
- Wenn die Genauigkeitsstufe
1ist, werden 1000 Werte zurückgegeben - Wenn die Genauigkeitsstufe
2ist, werden 8000 Werte zurückgegeben.
Die Fehlergrenze ist probabilistisch, keine theoretische Grenze. Der Wert ist die Standardabweichung der Fehlerverteilung (Sigma) und 99.7% der Schätzungen weisen einen relativen Fehler von unter 3 x Sigma auf.