Condividi tramite


dcountif() (funzione di aggregazione)

Stima il numero di valori distinti di expr per le righe in cui il predicato restituisce true.

I valori Null vengono ignorati e non vengono inseriti nel calcolo.

Nota

Questa funzione viene usata insieme all'operatore summarize.

Sintassi

dcountif(expr, predicato, [, accuratezza])

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
expr string ✔️ Espressione utilizzata per il calcolo dell'aggregazione.
predicato string ✔️ Espressione utilizzata per filtrare le righe.
accuratezza int Controllo tra velocità e accuratezza. Se non specificato, il valore predefinito è 1. Vedere Accuratezza della stima per i valori supportati.

Valori restituiti

Restituisce una stima del numero di valori distinti di expr per le righe in cui il predicato restituisce true.

Suggerimento

dcountif() può restituire un errore nei casi in cui tutte o nessuna delle righe passa l'espressione Predicate .

Esempio

In questo esempio viene illustrato il numero di tipi di eventi di tempesta irreversibili in ogni stato.

StormEvents
| summarize DifferentFatalEvents=dcountif(EventType,(DeathsDirect + DeathsIndirect)>0) by State
| where DifferentFatalEvents > 0
| order by DifferentFatalEvents 

La tabella dei risultati mostrata include solo le prime 10 righe.

Provincia DifferentFatalEvents
CALIFORNIA 12
TEXAS 12
OKLAHOMA 10
ILLINOIS 9
KANSAS 9
NEW YORK 9
NEW JERSEY 7
WASHINGTON 7
MICHIGAN 7
MISSOURI 7
... ...

Accuratezza della stima

Questa funzione usa una variante dell'algoritmo HyperLogLog (HLL), che esegue una stima stocastica della cardinalità set. L'algoritmo fornisce una "manopola" che può essere usata per bilanciare l'accuratezza e il tempo di esecuzione in base alle dimensioni della memoria:

Accuratezza Errori (%) Numero di voci
0 1.6 212
1 0,8 214
2 0,4 216
3 0,28 217
4 0,2 218

Nota

La colonna "Numero di voci" corrisponde al numero di contatori di 1 byte nell'implementazione di HLL.

L'algoritmo include alcune clausole per eseguire un conteggio perfetto (zero errori) se la cardinalità del set è sufficientemente piccola:

  • Se il livello di accuratezza è 1, vengono restituiti 1000 valori
  • Se il livello di accuratezza è 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.

L'immagine seguente mostra la funzione di distribuzione delle probabilità di errore relativo nella stima, in percentuali, per tutte le impostazioni di accuratezza supportate:

Grafico che mostra la distribuzione degli errori hll.