Функции для работы с временными рядами
Следующие функции предназначены для использования совместно с агрегатными функциями timeSeries*(), такими как
timeSeriesInstantRateToGrid,
timeSeriesLastToGrid
и другими.
seriesDecomposeSTL
Добавлена в: v24.1
Разлагает данные временного ряда с помощью STL (Seasonal-Trend Decomposition Procedure Based on Loess) на сезонную, трендовую и остаточную составляющие.
Синтаксис
Аргументы
series— массив числовых значенийArray((U)Int8/16/32/64)илиArray(Float*)period— положительное целое числоUInt8/16/32/64
Возвращаемое значение
Возвращает массив из четырёх массивов, где первый массив содержит сезонные компоненты, второй массив — тренд, третий массив — остаток, а четвёртый массив — базовую линию (seasonal + trend). Array(Array(Float32), Array(Float32), Array(Float32), Array(Float32))
Примеры
Декомпозиция данных временного ряда с использованием STL
seriesOutliersDetectTukey
Добавлена в версии: v24.2
Обнаруживает выбросы в данных временных рядов с использованием оград Тьюки (Tukey fences).
Синтаксис
Аргументы
series— Массив числовых значений.Array((UInt8/16/32/64))илиArray(Float*)min_percentile— Необязательный параметр. Минимальный перцентиль, используемый для вычисления межквартильного размаха (IQR). Значение должно быть в диапазоне [0.02,0.98]. Значение по умолчанию — 0.25.Float*max_percentile— Необязательный параметр. Максимальный перцентиль, используемый для вычисления межквартильного размаха (IQR). Значение должно быть в диапазоне [0.02,0.98]. Значение по умолчанию — 0.75.Float*K— Необязательный параметр. Неотрицательная константа для обнаружения умеренных или более сильных выбросов. Значение по умолчанию — 1.5.Float*
Возвращаемое значение
Возвращает массив той же длины, что и входной массив, где каждое значение представляет собой меру степени возможной аномалии соответствующего элемента в ряду. Ненулевое значение указывает на возможную аномалию. Array(Float32)
Примеры
Базовое обнаружение выбросов
Обнаружение выбросов с настраиваемыми параметрами
seriesPeriodDetectFFT
Добавлена в: v23.12
Определяет период заданного ряда данных с использованием FFT — быстрого преобразования Фурье
Синтаксис
Аргументы
series— массив числовых значений.Array((U)Int8/16/32/64)илиArray(Float*)
Возвращаемое значение
Возвращает значение с плавающей запятой, равное периоду данных временного ряда. NaN, если количество точек данных меньше четырёх. Float64
Примеры
Определение периода для простого паттерна
Выделение периодов по сложному шаблону
timeSeriesFromGrid
Введена в версии: v25.8
Преобразует массив значений [x1, x2, x3, ...] в массив кортежей
[(start_timestamp, x1), (start_timestamp + step, x2), (start_timestamp + 2 * step, x3), ...].
Текущая метка времени увеличивается на step до тех пор, пока не станет больше end_timestamp.
Если количество значений не совпадает с количеством меток времени, функция генерирует исключение.
Значения NULL в [x1, x2, x3, ...] пропускаются, но текущая метка времени всё равно увеличивается.
Например, для [value1, NULL, x2] функция возвращает [(start_timestamp, x1), (start_timestamp + 2 * step, x2)].
Синтаксис
Аргументы
start_timestamp— Начало сетки.DateTime64илиDateTimeилиUInt32end_timestamp— Конец сетки.DateTime64илиDateTimeилиUInt32step— Шаг сетки в секундах,Decimal64илиDecimal32илиUInt32/64values— Массив значенийArray(Float*)илиArray(Nullable(Float*))
Возвращаемое значение
Возвращает значения из исходного массива, объединённые с метками времени на равномерной временной сетке, задаваемой start_timestamp и step. Array(Tuple(DateTime64, Float64))
Примеры
Пример использования
timeSeriesIdToTags
Добавлено в: v25.8
Функция находит теги, связанные с указанным идентификатором временного ряда.
Синтаксис
Аргументы
id— идентификатор временного ряда.UInt64илиUInt128илиUUIDилиFixedString(16)
Возвращаемое значение
Возвращает массив пар вида (tag_name, tag_value). Array(Tuple(String, String))
Примеры
Пример
timeSeriesIdToTagsGroup
Добавлено в версии: v25.8
Преобразует указанный идентификатор временного ряда в индекс его группы. Индексы групп — это числа 0, 1, 2, 3, сопоставленные каждому уникальному набору тегов в контексте выполняемого запроса.
Синтаксис
Аргументы
id— идентификатор временного ряда.UInt64илиUInt128илиUUIDилиFixedString(16)
Возвращаемое значение
Возвращает индекс группы, связанный с этим набором тегов. UInt64
Примеры
Пример
timeSeriesRange
Введена в версии: v25.8
Генерирует диапазон меток времени вида [start_timestamp, start_timestamp + step, start_timestamp + 2 * step, ..., end_timestamp].
Если start_timestamp равен end_timestamp, функция возвращает массив из одного элемента, содержащий [start_timestamp].
Функция timeSeriesRange() аналогична функции range.
Синтаксис
Аргументы
start_timestamp— начало диапазона.DateTime64илиDateTimeилиUInt32end_timestamp— конец диапазона.DateTime64илиDateTimeилиUInt32step— шаг диапазона в секундах:UInt32/64илиDecimal32/64
Возвращаемое значение
Возвращает диапазон временных меток в виде Array(DateTime64).
Примеры
Пример использования
timeSeriesStoreTags
Добавлена в: v25.8
Сохраняет соответствие между идентификатором временного ряда и его тегами в контексте запроса, чтобы функция timeSeriesIdToTags() могла позже извлечь эти теги.
Синтаксис
Аргументы
id— идентификатор временного ряда.UInt64илиUInt128илиUUIDилиFixedString(16)tags_array— массив пар (tag_name, tag_value).Array(Tuple(String, String))илиNULLseparate_tag_name_i— имя тега.StringилиFixedStringseparate_tag_value_i— значение тега.StringилиFixedStringилиNullable(String)
Возвращаемое значение
Возвращает первый аргумент, то есть идентификатор временного ряда.
Примеры
Пример
timeSeriesTagsGroupToTags
Добавлено в версии: v25.8
Находит теги, связанные с групповым индексом. Групповые индексы — это числа 0, 1, 2, 3, соответствующие каждому уникальному набору тегов в контексте выполняемого в данный момент запроса.
Синтаксис
Аргументы
group— групповой индекс, связанный с временным рядом.UInt64
Возвращаемое значение
Массив пар (tag_name, tag_value). Array(Tuple(String, String))
Примеры
Пример