Функции для временных рядов
Следующие функции предназначены для использования совместно с агрегатными функциями семейства timeSeries*(), такими как
timeSeriesInstantRateToGrid,
timeSeriesLastToGrid
и другими.
timeSeriesRange
Создаёт диапазон временных меток.
Синтаксис
Аргументы
start_timestamp- начало диапазона.end_timestamp- конец диапазона.step- шаг диапазона в секундах.
Возвращаемое значение
- Возвращает диапазон меток времени
[start_timestamp, start_timestamp + step, start_timestamp + 2 * step, ..., end_timestamp].
Примеры
Запрос:
Результат:
Примечания
- Если функция
timeSeriesRange()вызывается сstart_timestamp, равнымend_timestamp, то она возвращает массив из одного элемента, содержащий этот момент времени:[start_timestamp] - Функция
timeSeriesRange()аналогична функции range. Например, если тип меток времени —DateTime64(3)иstart_timestamp < end_timestamp, тоtimeSeriesRange(start_timestamp, end_timestamp, step)возвращает тот же результат, что и следующее выражение:
timeSeriesFromGrid
Преобразует массив значений [value1, value2, value3, ..., valueN] в массив кортежей
[(start_timestamp, value1), (start_timestamp + step, value2), (start_timestamp + 2 * step, value3), ..., (end_timestamp, valueN)].
Если некоторые значения из [value1, value2, value3, ...] равны NULL, функция не будет копировать такие NULL-значения в результирующий массив,
но при этом всё равно будет увеличивать текущую временную метку. То есть, например, для [value1, NULL, value2] функция вернёт
[(start_timestamp, value1), (start_timestamp + 2 * step, value2)].
Текущая временная метка увеличивается на step до тех пор, пока не станет больше end_timestamp, при этом каждая временная метка будет сочетаться со значением
из указанного массива значений. Если количество значений не совпадает с количеством временных меток, функция сгенерирует исключение.
Синтаксис
Аргументы
start_timestamp— начало временной сетки.end_timestamp— конец временной сетки.step— шаг сетки в секундах.values— массив значений[value1, value2, ..., valueN].
Возвращаемое значение
- Возвращает значения из исходного массива, объединённые с метками времени на равномерной временной сетке, задаваемой параметрами
start_timestampиstep.
Примеры
Запрос:
Результат:
Примечание
Функция timeSeriesFromGrid(start_timestamp, end_timestamp, step, values) возвращает тот же результат, что и следующее выражение:
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) — Fast Fourier transform
Синтаксис
Аргументы
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))
Примеры
Пример