Поделиться через


bin()

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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 в течение отсутствующих дней. Ниже приведены пошаговые объяснения процесса.

  1. union Используйте оператор, чтобы добавить в таблицу дополнительные строки.
  2. Оператор range создает таблицу с одной строкой и одним столбцом.
  3. Оператор mv-expand над range функцией создает столько строк, сколько между ними EndTimeесть ячейкиStartTime.
  4. Используйте для PropertyDamage значение 0.
  5. Оператор 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