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


Оператор range

Область применения: ✅Microsoft Fabric✅

Создает таблицу значений с одним столбцом.

Примечание.

Этот оператор не принимает табличные входные данные.

Синтаксис

range columnNamefromначалоtoостановкаstepшаг

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
columnName string ✔️ Имя одного столбца в выходной таблице.
Начало int, long, real, datetime или timepan ✔️ Наименьшее значение в выходных данных.
stop int, long, real, datetime или timepan ✔️ Наибольшее значение, создаваемое в выходных данных или привязанное к самому высокому значению, если шаг превышает это значение.
шаг int, long, real, datetime или timepan ✔️ Разница между двумя последовательными значениями.

Примечание.

Значения не могут ссылаться на столбцы любой таблицы. Если вы хотите вычислить диапазон на основе входной таблицы, используйте функцию диапазона потенциально с оператором mv-expand .

Возвраты

Таблица с одним столбцом с именем columnName, значения которого начинаются, действие, ... до и до остановки+.

Примеры

В этом разделе показано, как использовать синтаксис для начала работы.

Примеры, приведенные в этой статье, используют общедоступные таблицы в кластера, например таблицу StormEvents в базе данных Samples.

В примерах этой статьи используются общедоступные таблицы, такие как таблица StormEvents в аналитике погоды примеры данных.

Диапазон за последние семь дней

В следующем примере создается таблица с записями для текущей метки времени, продленной за последние семь дней, один раз в день.

range LastWeek from ago(7d) to now() step 1d

Выходные данные

LastWeek
2015-12-05 09:10:04.627
2015-12-06 09:10:04.627
...
2015-12-12 09:10:04.627

Объединение разных времен остановки

В следующем примере показано, как расширить диапазоны для использования нескольких раз остановки с помощью оператора union.

let Range1 = range Time from datetime(2024-01-01) to datetime(2024-01-05) step 1d;
let Range2 = range Time from datetime(2024-01-06) to datetime(2024-01-10) step 1d;
union Range1, Range2
| order by Time asc

Выходные данные

Время
2024-01-04 00:00:00.0000000
2024-01-05 00:00:00.0000000
2024-01-06 00:00:00.0000000
2024-01-07 00:00:00.0000000
2024-01-08 00:00:00.0000000
2024-01-09 00:00:00.0000000
2024-01-10 00:00:00.0000000

Диапазон с помощью параметров

В следующем примере показано, как использовать range оператор с параметрами, которые затем расширяются и используются в качестве таблицы.

let toUnixTime = (dt:datetime) 
{ 
    (dt - datetime(1970-01-01)) / 1s 
};
let MyMonthStart = startofmonth(now()); //Start of month
let StepBy = 4.534h; //Supported timespans
let nn = 64000; // Row Count parametrized
let MyTimeline = range MyMonthHour from MyMonthStart to now() step StepBy
| extend MyMonthHourinUnixTime = toUnixTime(MyMonthHour), DateOnly = bin(MyMonthHour,1d), TimeOnly = MyMonthHour - bin(MyMonthHour,1d)
; MyTimeline | order by MyMonthHour asc | take nn

Выходные данные

MyMonthHour MyMonthHourinUnixTime DateOnly TimeOnly
2023-02-01 00:00:00.0000000 1675209600 2023-02-01 00:00:00.0000000
2023-02-01 04:32:02.4000000 1675225922.4 2023-02-01 00:00:00.0000000
2023-02-01 09:04:04.8000000 1675242244.8 2023-02-01 00:00:00.0000000
2023-02-01 13:36:07.2000000 1675258567.2 2023-02-01 00:00:00.0000000
... ... ... ...

Добавочные шаги

В следующем примере создается таблица с одним столбцом с именем Steps, тип которого long и приводит к значению от одного до восьми.

range Steps from 1 to 8 step 3

Выходные данные

Шаги
1
4
7

Трассировки с течением времени

В следующем примере показано, как можно использовать оператор range для создания таблицы измерений, которая используется для введения нуля, где исходные данные не имеют значений. Метки времени требуются за последние четыре часа и счетчик трассировки для каждого интервала в одну минуту. Если для определенного интервала нет трассировок, число равно нулю.

range TIMESTAMP from ago(4h) to now() step 1m
| join kind=fullouter
  (Traces
      | where TIMESTAMP > ago(4h)
      | summarize Count=count() by bin(TIMESTAMP, 1m)
  ) on TIMESTAMP
| project Count=iff(isnull(Count), 0, Count), TIMESTAMP
| render timechart