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


Оператор 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, значения которого начинаются, + действие, ... до и до остановки.

Примеры

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

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

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

| Steps |
|-------|
| 1     |
| 4     |
| 7     |

### Traces over a time range

The following example shows how the `range` operator can be used to create a dimension table that is used to introduce zeros where the source data has no values. It takes timestamps from the last four hours and counts traces for each one minute interval. When there are no traces for a specific interval, the count is zero.

```kusto
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