Оператор make-series
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
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" ] |