bin()

Hiermee worden waarden naar beneden afgerond op een veelvoud van een geheel getal van een bepaalde bin-grootte.

Wordt vaak gebruikt in combinatie met summarize by .... Als u een spreidingsset waarden hebt, worden deze gegroepeerd in een kleinere set specifieke waarden.

De bin() functies en floor() zijn gelijkwaardig

Syntax

bin(Waarde,roundTo)

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
value int, long, realtime, periode of datum/tijd ✔️ De waarde die naar beneden moet worden afgerond.
roundTo int, long, real of time period ✔️ De 'bin size' die de waarde deelt.

Retouren

Het dichtstbijzijnde veelvoud van roundTo onder de waarde. Null-waarden, een null-bingrootte of een negatieve bin-grootte resulteren in null.

Voorbeelden

Numerieke bin

print bin(4.5, 1)

Uitvoer

print_0
4

Periode bin

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

Uitvoer

print_0
14:00:00:00

Datum/tijd-bin

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

Uitvoer

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

Een tabel opvult met null-bins

Wanneer er rijen zijn voor opslaglocaties zonder bijbehorende rij in de tabel, raden we u aan om de tabel te voorzien van deze opslaglocaties. Met de volgende query wordt gekeken naar gebeurtenissen met sterke windstormen in Californië gedurende een week in april. Op sommige dagen zijn er echter geen gebeurtenissen.

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)

Uitvoer

StartTime Materiële schade
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105000

Om de volledige week weer te geven, vult de volgende query de resultaattabel met null-waarden voor de ontbrekende dagen. Hier volgt een stapsgewijze uitleg van het proces:

  1. Gebruik de union operator om meer rijen toe te voegen aan de tabel.
  2. De range operator produceert een tabel met één rij en kolom.
  3. De mv-expand operator voor de range functie maakt net zoveel rijen als er bins tussen StartTime en EndTimezijn.
  4. Gebruik een PropertyDamage van 0.
  5. De summarize operator groepeert bins van de oorspronkelijke tabel naar de tabel die door de union expressie wordt geproduceerd. Dit proces zorgt ervoor dat de uitvoer één rij per bin heeft waarvan de waarde nul of het oorspronkelijke aantal is.
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)

Uitvoer

StartTime Materiële schade
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