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 值。 以下是程式的逐步說明:
union
使用運算子將更多數據列新增至數據表。- 運算子
range
會產生具有單一數據列和數據行的數據表。 - 函
mv-expand
式上的range
運算子會建立與 之間StartTime
EndTime
有間隔數目的數據列。 PropertyDamage
使用 的0
。- 運算子會將
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 |