bin()

Arrotonda per difetto i valori fino a un numero intero multiplo della dimensione del contenitore specificata.

Si usa spesso in combinazione con summarize by .... Se si dispone di un set di valori a dispersione, verranno raggruppati in un set più piccolo di valori specifici.

Le bin() funzioni e floor() sono equivalenti

Sintassi

bin(value,roundTo)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
value int, long, real, timepan o datetime ✔️ Valore da arrotondare.
roundTo int, long, real o timepan ✔️ Dimensione "bin" che divide il valore.

Restituisce

Il multiplo più vicino di roundTo inferiore a value. Valori Null, dimensioni di bin Null o dimensioni di bin negative restituiranno Null.

Esempio

Contenitore numerico

print bin(4.5, 1)

Output

print_0
4

Bin Timepan

print bin(time(16d), 7d)

Output

print_0
14:00:00:00

Bin Datetime

print bin(datetime(1970-05-11 13:45:07), 1d)

Output

print_0
1970-05-11T00:00:00Z

Riquadri di una tabella con bin Null

Quando sono presenti righe per i contenitori senza righe corrispondenti nella tabella, è consigliabile inserire la tabella con tali contenitori. La query seguente esamina gli eventi della tempesta vento forte in California per una settimana ad aprile. Tuttavia, non ci sono eventi in alcuni giorni.

let Start = datetime('2007-04-07');
let End = Start + 7d;
StormEvents
| where StartTime between (Start .. End)
| where State == "CALIFORNIA" and EventType == "Strong Wind"
| summarize PropertyDamage=sum(DamageProperty) by bin(StartTime, 1d)

Output

StartTime PropertyDamage
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105000

Per rappresentare la settimana completa, il riquadro di query seguente esegue la tabella dei risultati con valori Null per i giorni mancanti. Ecco una spiegazione dettagliata del processo:

  1. Usare l'operatore union per aggiungere altre righe alla tabella.
  2. L'operatore range produce una tabella con una singola riga e una singola colonna.
  3. L'operatore mv-expand sulla range funzione crea il numero di righe StartTime presenti tra e EndTime.
  4. Usare un valore 0 per PropertyDamage.
  5. L'operatore summarize raggruppa i bin dalla tabella originale alla tabella prodotta dall'espressione union . Questo processo assicura che l'output abbia un'unica riga per ogni bin il cui valore è pari a zero o al conteggio originale.
let Start = datetime('2007-04-07');
let End = Start + 7d;
StormEvents
| where StartTime between (Start .. End)
| where State == "CALIFORNIA" and EventType == "Strong Wind"
| union (
    range x from 1 to 1 step 1
    | mv-expand StartTime=range(Start, End, 1d) to typeof(datetime)
    | extend PropertyDamage=0
    )
| summarize PropertyDamage=sum(DamageProperty) by bin(StartTime, 1d)

Output

StartTime PropertyDamage
2007-04-07T00:00:00Z 0
2007-04-08T00:00:00Z 3000
2007-04-09T00:00:00Z 0
2007-04-10T00:00:00Z 0
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105000
2007-04-13T00:00:00Z 0
2007-04-14T00:00:00Z 0