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


Оператор make-series

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

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

Синтаксис

T| make-series [MakeSeriesParameters] [Столбец=] Агрегирование [default=DefaultValue] [, ...] onAxisColumn [fromstart] [toend] step [by] =GroupExpression [, ...]]

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

Параметры

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

Примечание.

startДля endсоздания массива значений step используются параметры и параметры. Массив состоит из значений между и start, с end значением, представляющим разницу между step одним элементом массива и следующим. Все значения Aggregation упорядочиваются относительно этого массива.

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

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

Примечание.

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

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

T| make-series [столбец=] Агрегирование [default=DefaultValue] [, ...] onAxisColumninrange(начало,остановка,шаг) [byстолбец=] GroupExpression [, ...]]

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

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

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

Возвраты

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

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

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

Примечание.

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

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

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

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

Функция Описание
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).

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

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

Функция Описание
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 

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

Численность
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.000000Z",
"2017-01-02T00:00:00.000000Z",
"2017-01-03T00:00:00.0000000Z",
"2017-01-04T00:00:00.000000Z",
"2017-01-05T00:00:00.0000000Z",
"2017-01-06T00:00:00.000000Z",
"2017-01-07T00:00:00.000000Z",
"2017-01-08T00:00:00.000000Z",
"2017-01-09T00:00:00.000000Z"
]

Использование make-series и mv-expand заполнение значений отсутствующих записей:

let startDate = datetime(2025-01-06);
let endDate = datetime(2025-02-09);
let data = datatable(Time: datetime, Value: int, other:int)
[
    datetime(2025-01-07), 10, 11,
    datetime(2025-01-16), 20, 21,
    datetime(2025-02-01), 30, 5
];
data
| make-series Value=sum(Value), other=-1 default=-2 on Time from startDate to endDate step 7d
| mv-expand Value, Time, other
| extend Time=todatetime(Time), Value=toint(Value), other=toint(other)
| project-reorder Time, Value, other 

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

Время Ценность иное
2025-01-06T00:00:00Z 10 -1
2025-01-13T00:00:00Z 20 -1
2025-01-20T00:00:00Z 0 -2
2025-01-27T00:00:00Z 30 -1
2025-02-03T00:00:00Z 0 -2