GitHubContribuisci in GitHub: Modifica in linea

dcount () (funzione di aggregazione)

Consultare Compatibilità KQL per le differenze nell'implementazione.

Restituisce una stima del numero di valori distinti presi da un'espressione scalare nel gruppo di riepilogo.

La funzione di aggregazione dcount() è utile principalmente per la stima della cardinalità di insiemi di grandi dimensioni. Scambia le prestazioni per precisione e può restituire un risultato che varia tra le esecuzioni. L'ordine degli input può avere un effetto sull'output.

Sintassi

dcount (Espr[, Precisione])

Argomenti

Espr Immettere Obbligatorio Descrizione
Espr stringa Un'espressione scalare i cui valori distinti devono essere contati.
Precisione INT Un valore letterale int facoltativo che definisce la precisione della stima richiesta.
Vedere di seguito per i valori supportati. Se non specificato, viene utilizzato il valore predefinito 1 .

Precisione, se specificato, controlla il bilanciamento tra velocità e precisione.

Valore Descrizione
da 0 Il calcolo meno preciso e più veloce. Errore 1.6%
ERROR! SEGMENT DATA CORRUPTED, SEGDATA=1 Il valore predefinito, che bilancia precisione e tempo di calcolo; circa 0.8% di errore.
ERROR! SEGMENT DATA CORRUPTED, SEGDATA=2 Calcolo accurato e lento; circa 0.4% di errore.
3 Calcolo più preciso e lento; circa 0.28% di errore.
4,00 Calcolo estremamente accurato e più lento; circa 0.2% di errore.

Esempio

Restituisce una stima del numero di namedistinti.

events
    | project name, original_time
    | where original_time > ago(5m)
    | summarize NameCount=dcount(name)

Risultati

NameCount
2032

Esempio

Ottenere un conteggio esatto dei valori distinti di V raggruppati per G.

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

Questo calcolo richiede una notevole quantità di memoria interna, poiché i valori distinti di V vengono moltiplicati per il numero di valori distinti di G. Ciò può causare errori di memoria o tempi di esecuzione elevati. dcount()fornisce un'alternativa rapida e affidabile:

T | summarize dcount(V) by G | count

Precisione della stima

La funzione di aggregazione dcount() utilizza una variante dell' algoritmo HLL (HyperLogLog), che esegue una stima stocastica della cardinalità dell'insieme. L'algoritmo fornisce una "manopola" che può essere utilizzata per bilanciare precisione e tempo di esecuzione per dimensione della memoria:

Precisione Errore (%) Conteggio voci
0 1.6 212
1 0.8 214
2 0.4 216
3 0.28 217
4 0.2 218

La colonna "conteggio voci" è il numero di contatori a 1 byte nell'implementazione HLL.

L'algoritmo include alcune disposizioni per eseguire un conteggio perfetto (errore zero), se la cardinalità impostata è abbastanza piccola:

  • Quando il livello di accuratezza è 1, vengono restituiti 1000 valori
  • Quando il livello di precisione è 2, vengono restituiti 8000 valori

Il limite di errore è probabilistico, non teorico. Il valore è la deviazione standard della distribuzione degli errori (sigma) e il 99.7% delle stime avrà un errore relativo inferiore a 3 x sigma.