bin()

Zaokrouhlí hodnoty dolů na celočíselný násobek 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() jsou ekvivalentní.

Syntax

bin(Hodnotu,roundTo)

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

Parametry

Název Typ Vyžadováno Popis
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ěluje 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á přihrádka

print bin(4.5, 1)

Výstup

print_0
4

Interval časového rozsahu

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

Výstup

print_0
14:00:00:00

Interval data a času

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

Výstup

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

Vložit tabulku do přihrádek s hodnotou null

Pokud existují řádky pro intervaly bez odpovídajícího řádku v tabulce, doporučujeme vložit tabulku těmito intervaly. Následující dotaz se podívá na silné bouře v Kalifornii za týden v dubnu. V některých dnech se ale nedochází k žádným událostem.

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

StartTime PropertyDamage
2007-04-08T0: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 podá tabulku výsledků s hodnotami null pro chybějící dny. Tady je podrobné vysvětlení tohoto procesu:

  1. Pomocí operátoru union přidejte do tabulky 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 je intervalů mezi StartTime a EndTime.
  4. Použijte z PropertyDamage .0
  5. Operátor seskupí summarize intervaly z původní tabulky do tabulky vytvořené výrazem union . Tento proces zajistí, že výstup bude v každé přihrádce jeden řádek, 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

StartTime PropertyDamage
2007-04-07T00:00:00Z 0
2007-04-08T0:00:00Z 3000
2007-04-09T0: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