bin()
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
округляет значения до целого числа, кратного указанному размеру группы.
Часто используется в сочетании с summarize by ...
.
Если у вас есть разбросанный набор значений, они будут сгруппированы в меньший набор определенных значений.
floor()
Функцииbin()
эквивалентны
Синтаксис
bin(
value,
roundTo)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Description |
---|---|---|---|
значение | int, long, real, timepan или datetime | ✔️ | Значение для округления. |
roundTo | int, long, real или timepan | ✔️ | Размер ячейки, разделяющий значение. |
Возвраты
Ближайшее число, кратное roundTo и меньшее value. При указании значения NULL, размера ячейки NULL или отрицательного значения размера ячейки возвращается значение NULL.
Примеры
Числовое ячейка
print bin(4.5, 1)
Выходные данные
print_0 |
---|
4 |
Ячейка интервала времени
print bin(time(16d), 7d)
Выходные данные
print_0 |
---|
14:00:00:00 |
Bin Datetime
print bin(datetime(1970-05-11 13:45:07), 1d)
Выходные данные
print_0 |
---|
1970-05-11T00:00:00Z |
Заполнение таблицы с пустыми ячейками
Если в таблице есть строки для ячеек без соответствующей строки, рекомендуется заполнить таблицу этими ячейками. Следующий запрос смотрит на сильные штормовые события в Калифорнии на неделю в апреле. Однако в некоторые дни не существует событий.
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)
Выходные данные
Время начала | PropertyDamage |
---|---|
2007-04-08T00:00:00Z | 3000 |
2007-04-11T00:00:00Z | 1000 |
2007-04-12T00:00:00Z | 105000 |
Чтобы представить полную неделю, следующий запрос заполняет таблицу результатов значениями NULL в течение отсутствующих дней. Ниже приведены пошаговые объяснения процесса.
union
Используйте оператор, чтобы добавить в таблицу дополнительные строки.- Оператор
range
создает таблицу с одной строкой и одним столбцом. - Оператор
mv-expand
надrange
функцией создает столько строк, сколько между нимиEndTime
есть ячейкиStartTime
. - Используйте для
PropertyDamage
значение0
. - Оператор
summarize
группирует ячейки из исходной таблицы в таблицу, созданную выражениемunion
. Этот процесс гарантирует, что выходные данные будут содержать одну строку для каждого интервала, значение которой равно нулю или исходному количеству.
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)
Выходные данные
Время начала | 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 |