Dela via


bin()

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Avrundar värden nedåt till en heltalsmultipel av en viss lagerplatsstorlek.

Används ofta i kombination med summarize by .... Om du har en punktspridd 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.

Parameterar

Namn Typ Krävs 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.

Retur

Den närmaste multipeln av roundTo under värdet. Null-värden, en null-bin-storlek eller en negativ bin-storlek resulterar i null.

Exempel

I följande exempel visas funktionen bin() med numeriska data.

print bin(4.5, 1)

Resultat

print_0
4

I följande exempel visas funktionen bin() med tidsintervalldata.

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

Resultat

print_0
14:00:00:00

I följande exempel visas funktionen bin() med datetime-data.

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

Resultat

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

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 stormhändelser i Kalifornien under en vecka i april. Det finns dock inga händelser på 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

Starttid PropertyDamage
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1 000
2007-04-12T00:00:00Z 105000

För att representera hela veckan fyller följande fråga 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 så många rader som det finns lagerplatser mellan StartTime och EndTime.
  4. Använd en PropertyDamage av 0.
  5. Operatorn summarize grupperar lagerplatser från den ursprungliga tabellen till tabellen som skapas av union uttrycket. Den här processen säkerställer att utdata har en rad per lagerplats vars värde antingen är 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

Starttid 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 1 000
2007-04-12T00:00:00Z 105000
2007-04-13T00:00:00Z 0
2007-04-14T00:00:00Z 0