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


Оператор make-series

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Узнайте, как создать серию указанных статистических значений по заданной оси.

Синтаксис

T | make-series [MakeSeriesParameters] [Column =] Aggregation [default = DefaultValue] [, ...] on AxisColumn [from start] [to end] step step [by [Column =] GroupExpression [, ...]]

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

Параметры

Имя (название) Type Обязательно Описание
Столбец string Имя столбца результатов. По умолчанию это имя, получаемое из выражения.
DefaultValue скаляр Значение по умолчанию для использования вместо отсутствующих значений. Если строки с определенными значениями AxisColumn и GroupExpression отсутствуют, соответствующий элемент массива будет назначен значение DefaultValue. Значение по умолчанию — 0.
Агрегат string ✔️ Вызов функции агрегирования, например count() или avg()с именами столбцов в качестве аргументов. См. список статистических функций. С оператором make-series можно использовать только статистические функции, возвращающие числовые результаты.
AxisColumn string ✔️ Столбец, по которому будет упорядочен ряд. Обычно значения столбцов будут иметь тип datetime или timespan все числовые типы принимаются.
Начало скаляр ✔️ Низкое ограничивающее значение AxisColumn для каждой из созданных рядов. Если запуск не указан, он будет первым контейнером или шагом, который содержит данные в каждой серии.
end скаляр ✔️ Высокограничное не инклюзивное значение AxisColumn. Последний индекс временных рядов меньше этого значения и будет начинаться плюс целое число, которое меньше конца. Если конец не указан, он будет верхней границой последней ячейки или шага, которая содержит данные для каждой серии.
шаг скаляр ✔️ Разница или размер ячейки между двумя последовательными элементами массива AxisColumn . Список возможных интервалов времени см. в разделе "Интервал времени".
GroupExpression выражение для столбцов, предоставляющее набор уникальных значений. Обычно это имя столбца, который уже содержит ограниченный набор значений.
MakeSeriesParameters Ноль или более разделенных пробелами параметров в виде значения имени = , которое управляет поведением. См . поддерживаемые параметры серии.

Примечание.

Параметры начального, конечного и шага используются для создания массива значений AxisColumn . Массив состоит из значений между начальной и конечной, с значением шага , представляющего разницу между одним элементом массива и следующим. Все значения Aggregation упорядочиваются относительно этого массива.

Поддерживаемые параметры серии

Имя Описание
kind Создает результат по умолчанию, если входные данные оператора make-series пусты. Значение: nonempty
hint.shufflekey=<key> Запрос shufflekey использует нагрузку запроса на узлы кластера, используя ключ для секционирования данных. См. запрос перемешивания

Примечание.

Массивы, создаваемые оператором make-series, ограничены 1048576 значениями (2^20). Попытка создать массив большего размера с помощью make-series приведет к ошибке или созданию усеченного массива.

Альтернативный синтаксис

T | make-series [Column =] Aggregation [default = DefaultValue] [, ...] on AxisColumn in range(start, stop, step) [by [Column =] GroupExpression [, ...]]

Созданный ряд с альтернативным синтаксисом отличается от основного синтаксиса в двух аспектах:

  • Значение stop является инклюзивным.
  • Группирование оси индекса создается с помощью bin(), а не bin_at(). Это означает, что start может не включаться в созданный ряд.

Рекомендуется использовать основной синтаксис make-series, а не альтернативный синтаксис.

Возвраты

Входные строки объединяются в группы с одинаковыми значениями выражений by и выражения bin_at(AxisColumn,step,start). Затем указанные агрегатные функции выполняют вычисления и создают строку для каждой группы. Результат содержит столбцы by, столбец AxisColumn и хотя бы один столбец для каждого вычисленного статистического выражения. (Агрегаты по нескольким столбцам или нечисловым результатам не поддерживаются.)

Этот промежуточный результат содержит столько же строк, сколько имеется отдельных сочетаний by и значений bin_at(AxisColumn,step,start).

Наконец, строки из промежуточного результата, собранные в группы с одинаковыми значениями выражений by, и все агрегированные значения упорядочиваются в массивы (значения типа dynamic). Для каждой статистической обработки есть один столбец, содержащий его массив с одинаковым именем. Последний столбец представляет собой массив со значениями AxisColumn, которые сгруппированы в соответствии с указанным значением step.

Примечание.

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

Список статистических функций

Function Description
avg() Возвращает среднее значение в группе.
avgif() Возвращает среднее значение с предикатом в группе.
count() Возвращает число для групп.
countif() Возвращает число с предикатом для групп.
dcount() Возвращает приблизительное число уникальных элементов в группе.
dcountif() Возвращает приблизительное число уникальных элементов с предикатом в группе.
max() Возвращает максимальное значение в группе
maxif() Возвращает максимальное значение с предикатом в группе.
min() Возвращает минимальное значение в группе
minif() Возвращает минимальное значение с предикатом в группе.
percentile() Возвращает значение процентиля в группе.
take_any() Возвращает случайное непустое значение в группе.
stdev() Возвращает стандартное отклонение в группе
sum() Возвращает сумму элементов в группе
sumif() Возвращает сумму элементов с предикатом в группе.
дисперсии() Возвращает вариантность в группе.

Список функций анализа рядов

Function Description
series_fir() Применяет фильтр с конечной импульсной характеристикой.
series_iir() Применяет фильтр с бесконечной импульсной характеристикой.
series_fit_line() Находит прямую строку, которая является наилучшим приближением входных данных.
series_fit_line_dynamic() Находит строку, которая является наилучшим приближением входных данных, возвращая динамический объект.
series_fit_2lines() Находит две строки, которые являются наилучшим приближением входных данных.
series_fit_2lines_dynamic() Находит две строки, которые являются наилучшим приближением входных данных, возвращая динамический объект.
series_outliers() Оценивает точки аномалий в ряду.
series_periods_detect() Находит наиболее значимые периоды во временных рядах.
series_periods_validate() Проверяет, содержит ли временной ряд периодические шаблоны заданной длины.
series_stats_dynamic() Возвращает несколько столбцов с общей статистикой (min/max/variance/stdev/average).
series_stats() Создает динамическое значение с общей статистикой (min/max/variance/stdev/average).

Полный список функций анализа рядов см. в разделе: функции обработки рядов

Список функций интерполяции ряда

Function Description
series_fill_backward() Выполняет интерполяцию с обратным заполнением отсутствующих значений в ряду.
series_fill_const() Заменяет отсутствующие значения в ряду указанным значением константы.
series_fill_forward() Выполняет интерполяцию с прямым заполнением отсутствующих значений в ряду.
series_fill_linear() Выполняет линейную интерполяцию отсутствующих значений в ряду.
  • Примечание. Функции интерполяции по умолчанию предполагают null отсутствие значения. Поэтому укажите default=double(null) в make-series, если планируется использовать функции интерполяции для ряда.

Примеры

Таблица, в которой отображаются массивы чисел и средние цены для каждого фрукта у каждого поставщика, упорядоченные по метке времени с заданным диапазоном. В выходных данных есть строка для каждого отдельного сочетания фрукта и поставщика. В выходных столбцах указаны фрукт, поставщик и следующие массивы: количество, среднее значение и полная временная шкала (с 01.01.2016 по 10.01.2016). Все массивы сортируются по соответствующей метке времени, а все пробелы заполняются значениями по умолчанию (0 в этом примере). Все остальные входные столбцы игнорируются.

T | make-series PriceAvg=avg(Price) default=0
on Purchase from datetime(2016-09-10) to datetime(2016-09-13) step 1d by Supplier, Fruit

Три таблицы. Первый перечисляет необработанные данные, второй имеет только отдельные сочетания даты поставщика и даты, а третий содержит результаты make-series.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| make-series avg(metric) on timestamp from stime to etime step interval 
avg_metric TIMESTAMP
[ 4.0, 3.0, 5.0, 0.0, 10.5, 4.0, 3.0, 8.0, 6.5 ] [ "2017-01-01T00:00:00.0000000Z", "2017-01-02T00:00:00.0000000Z", "2017-01-03T00:00:00.0000000Z", "2017-01-04T00:00:00.0000000Z", "2017-01-05T00:00:00.0000000Z", "2017-01-06T00:00:00.0000000Z", "2017-01-07T00:00:00.0000000Z", "2017-01-08T00:00:00.0000000Z", "2017-01-09T00:00:00.0000000Z" ]

Если входные данные make-series пусты, поведение make-series по умолчанию создает пустой результат.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series avg(metric) default=1.0 on timestamp from stime to etime step interval 
| count 

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

Count
0

Использование kind=nonempty в make-series приведет к непустому результату значений по умолчанию:

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval 

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

avg_metric TIMESTAMP
[
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
[
"2017-01-01T00:00:00.0000000Z",
"2017-01-02T00:00:00.0000000Z",
"2017-01-03T00:00:00.0000000Z",
"2017-01-04T00:00:00.0000000Z",
"2017-01-05T00:00:00.0000000Z",
"2017-01-06T00:00:00.0000000Z",
"2017-01-07T00:00:00.0000000Z",
"2017-01-08T00:00:00.0000000Z",
"2017-01-09T00:00:00.0000000Z"
]