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.