Sdílet prostřednictvím


bin()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Zaokrouhlí hodnoty dolů na celé číslo násobku dané velikosti přihrádky.

Používá se často v kombinaci s summarize by .... Pokud máte bodovou sadu hodnot, seskupí se do menší sady konkrétních hodnot.

Funkce bin() a floor() funkce jsou ekvivalentní.

Syntaxe

bin(hodnota,roundTo)

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Description
value int, long, real, timespan nebo datetime ✔️ Hodnota, která se má zaokrouhlit dolů.
roundTo int, long, real, or timespan ✔️ Velikost přihrádky, která rozdělí hodnotu.

Návraty

Nejbližší násobek roundTo pod hodnotou. Hodnoty null, velikost přihrádky null nebo záporná velikost přihrádky budou mít za následek hodnotu null.

Příklady

Číselný interval

print bin(4.5, 1)

Výstup

print_0
4

Interval časového intervalu

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

Výstup

print_0
14:00:00:00

Interval datetime

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

Výstup

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

Pad a table with null bins

Pokud jsou řádky pro intervaly bez odpovídajícího řádku v tabulce, doporučujeme vložit tabulku s těmito intervaly. Následující dotaz sleduje události silné bouře větru v Kalifornii týden v dubnu. V některých dnech však nejsou žádné události.

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)

Výstup

Počáteční čas PropertyDamage
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105000

Aby bylo možné reprezentovat celý týden, následující dotaz vloží výslednou tabulku s hodnotami null pro chybějící dny. Tady je podrobné vysvětlení tohoto procesu:

  1. Pomocí operátoru union můžete do tabulky přidat další řádky.
  2. Operátor range vytvoří tabulku, která má jeden řádek a sloupec.
  3. Operátor mv-expand nad range funkcí vytvoří tolik řádků, kolik jsou intervaly mezi StartTime a EndTime.
  4. PropertyDamage Použití funkce 0.
  5. Operátor summarize seskupí intervaly z původní tabulky do tabulky vytvořené výrazem union . Tento proces zajistí, že výstup má jeden řádek na interval, jehož hodnota je nula nebo původní počet.
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)

Výstup

Počáteční čas 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