共用方式為


bin()

適用於:✅Microsoft網狀架構Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel

將值捨入為指定量化大小的整數倍數。

經常與 summarize by ...搭配使用。 如果您有一組分散的值,這些值將會分組為較小的特定值集。

floor()bin()式相等

語法

bin(value,roundTo)

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 Description
value int、long、real、 timespan 或 datetime ✔️ 要四捨五入的值。
roundTo int、long、real 或 timespan ✔️ 值的「量化大小」。

傳回

最接近的 roundTo 低於值倍。 Null 值、Null 量化大小或負量化大小會導致 Null。

範例

數值量化

print bin(4.5, 1)

輸出

print_0
4

Timespan bin

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

輸出

print_0
14:00:00:00

Datetime bin

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

輸出

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

使用 Null bin 填補數據表

當數據表中沒有對應數據列的 bin 有數據列時,建議您將這些間隔填補數據表。下列查詢會查看加州四月份的強風風暴事件一周。 不過,有些日子里沒有事件。

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)

輸出

StartTime PropertyDamage
2007-04-08T00:00:00Z 3000
2007-04-11T00:00:00Z 1000
2007-04-12T00:00:00Z 105,000

為了代表整周,下列查詢會填補結果數據表,其中包含遺漏天數的 Null 值。 以下是程式的逐步說明:

  1. union使用運算子將更多數據列新增至數據表。
  2. 運算子 range 會產生具有單一數據列和數據行的數據表。
  3. mv-expand式上的 range 運算子會建立與 之間StartTimeEndTime有間隔數目的數據列。
  4. PropertyDamage使用 的 0
  5. 運算子會將 summarize 原始數據表中的 bin 群組到表示式所產生的 union 數據表。 此程式可確保輸出每個 bin 有一個數據列,其值為零或原始計數。
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)

輸出

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 105,000
2007-04-13T00:00:00Z 0
2007-04-14T00:00:00Z 0