Оператор make-series

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

Синтаксис

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

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

Параметры

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

Примечание

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

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

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

Примечание

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

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

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

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

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

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

Возвращаемое значение

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

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

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

Примечание

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

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

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

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

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

Три таблицы. В первой приведены необработанные данные, во второй — только различные сочетания

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.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"
]