bin()

Avrundar värden nedåt till ett heltal med en angiven lagerplatsstorlek.

Används ofta i kombination med summarize by .... Om du har en utspridda uppsättning värden grupperas de i en mindre uppsättning specifika värden.

Funktionerna bin() och floor() är likvärdiga

Syntax

bin(Värde,roundTo)

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
värde int, long, real, timespan eller datetime ✔️ Värdet som ska avrundas nedåt.
roundTo int, long, real eller timespan ✔️ Den "lagerplatsstorlek" som delar upp värdet.

Returer

Närmaste multipel av roundTo under värde. Null-värden, en null-bin-storlek eller en negativ bin-storlek resulterar i null.

Exempel

Numeriskt intervall

print bin(4.5, 1)

Resultat

print_0
4

Tidsintervall

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

Resultat

print_0
14:00:00:00

Datetime-lagerplats

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

Resultat

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

Fylla en tabell med null-intervall

När det finns rader för lagerplatser utan motsvarande rad i tabellen rekommenderar vi att du fyller tabellen med dessa lagerplatser. Följande fråga tittar på starka vindstormhändelser i Kalifornien under en vecka i april. Det finns dock inga händelser under vissa dagar.

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)

Resultat

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

För att representera hela veckan fyller följande fråga i resultattabellen med null-värden för de dagar som saknas. Här är en stegvis förklaring av processen:

  1. Använd operatorn union för att lägga till fler rader i tabellen.
  2. Operatorn range skapar en tabell som har en enda rad och kolumn.
  3. Operatorn mv-expand över range funktionen skapar lika många rader som det finns intervall mellan StartTime och EndTime.
  4. Använd en PropertyDamage av 0.
  5. Operatorn summarize grupperar intervall från den ursprungliga tabellen till den tabell som skapas av union uttrycket. Den här processen säkerställer att utdata har en rad per lagerplats vars värde är antingen noll eller det ursprungliga antalet.
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)

Resultat

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