GitHubContribute in GitHub: Online bearbeiten

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.