bin()
Округляет значения до целого, кратного указанному размеру группы.
Часто используется в сочетании с summarize by ...
.
Если у вас есть разбросанный набор значений, они будут сгруппированы в меньший набор конкретных значений.
Функции
bin()
иfloor()
эквивалентны
Синтаксис
bin(
value,
roundTo)
Дополнительные сведения о соглашениях о синтаксисе.
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
value | 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 |
Ячейка даты и времени
print bin(datetime(1970-05-11 13:45:07), 1d)
Выходные данные
print_0 |
---|
1970-05-11T00:00:00Z |
Заполнение таблицы ячейками null
При наличии строк для ячеек без соответствующей строки в таблице рекомендуется заполнить таблицу этими ячейками. В следующем запросе рассматриваются сильные штормовые штормы в Калифорнии в течение недели в апреле. Тем не менее, в некоторые дни нет событий.
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 | 105000 |
Чтобы представить всю неделю, следующий запрос заполняет таблицу результатов значениями NULL для отсутствующих дней. Ниже приведено пошаговое описание процесса.
- Используйте оператор ,
union
чтобы добавить дополнительные строки в таблицу. - Оператор
range
создает таблицу с одной строкой и одним столбцом. - Оператор
mv-expand
над функциейrange
создает столько строк, сколько междуStartTime
иEndTime
. - Используйте для
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)
Выходные данные
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 | 105000 |
2007-04-13T00:00:00Z | 0 |
2007-04-14T00:00:00Z | 0 |
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по