Перейти к основному содержанию
Приведённые ниже функции предназначены для использования с агрегатными функциями timeSeries*(), такими как timeSeriesInstantRateToGrid, timeSeriesLastToGrid, и другими.

seriesDecomposeSTL

Добавленный в: v24.1.0 Выполняет STL-декомпозицию временного ряда (Seasonal-Trend Decomposition Procedure Based on Loess) на сезонную, трендовую и остаточную компоненты. Синтаксис
seriesDecomposeSTL(series, period)
Аргументы Возвращаемое значение Возвращает массив из четырёх массивов, где первый содержит сезонные компоненты, второй — тренд, третий — остаточную компоненту, а четвёртый — базовую компоненту (сезонность + тренд). Array(Array(Float32), Array(Float32), Array(Float32), Array(Float32)) Примеры Декомпозиция данных временного ряда с помощью STL
Query
SELECT seriesDecomposeSTL([10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34], 3) AS print_0
Response
┌───────────print_0──────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [[
        -13.529999, -3.1799996, 16.71,      -13.53,     -3.1799996, 16.71,      -13.53,     -3.1799996,
        16.71,      -13.530001, -3.18,      16.710001,  -13.530001, -3.1800003, 16.710001,  -13.530001,
        -3.1800003, 16.710001,  -13.530001, -3.1799994, 16.71,      -13.529999, -3.1799994, 16.709997
    ],
    [
        23.63,     23.63,     23.630003, 23.630001, 23.630001, 23.630001, 23.630001, 23.630001,
        23.630001, 23.630001, 23.630001, 23.63,     23.630001, 23.630001, 23.63,     23.630001,
        23.630001, 23.63,     23.630001, 23.630001, 23.630001, 23.630001, 23.630001, 23.630003
    ],
    [
        0, 0.0000019073486, -0.0000019073486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.0000019073486, 0,
        0
    ],
    [
        10.1, 20.449999, 40.340004, 10.100001, 20.45, 40.34, 10.100001, 20.45, 40.34, 10.1, 20.45, 40.34,
        10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.100002, 20.45, 40.34
    ]]                                                                                                                   │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

seriesOutliersDetectTukey

Добавленный в: v24.2.0 Обнаруживает выбросы во временном ряду с помощью границ Тьюки. Синтаксис
seriesOutliersDetectTukey(series[, min_percentile, max_percentile, K])
Аргументы
  • 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) Примеры Базовое обнаружение выбросов
Query
SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4, 5, 12, 45, 12, 3, 3, 4, 5, 6]) AS print_0
Response
┌───────────print_0─────────────────┐
│[0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0] │
└───────────────────────────────────┘
Настраиваемые параметры обнаружения выбросов
Query
SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4.50, 5, 12, 45, 12, 3.40, 3, 4, 5, 6], 0.2, 0.8, 1.5) AS print_0
Response
┌─print_0──────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,19.5,0,0,0,0,0,0] │
└──────────────────────────────────────┘

seriesPeriodDetectFFT

Добавленный в: v23.12.0 Находит период заданного временного ряда с помощью FFT — быстрого преобразования Фурье Синтаксис
seriesPeriodDetectFFT(series)
Аргументы Возвращаемое значение Возвращает вещественное число, равное периоду ряда данных. NaN, если количество точек данных меньше четырёх. Float64 Примеры Определение периода по простому шаблону
Query
SELECT seriesPeriodDetectFFT([1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6]) AS print_0
Response
┌───────────print_0──────┐
│                      3 │
└────────────────────────┘
Определение периода в сложном паттерне
Query
SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0
Response
┌─print_0─┐
│       6 │
└─────────┘

timeSeriesCopyTag

Добавленный в: v26.1.0 Копирует указанный тег из одной группы тегов (src_group) в другую (dest_group). Функция заменяет все предыдущие значения скопированного тега в dest_group. Если скопированный тег отсутствует в src_group, функция также удаляет его из dest_group. Функция повторяет логику копирования модификаторов Prometheus group left/group right. Синтаксис
timeSeriesCopyTag(dest_group, src_group, tag_to_copy)
Аргументы
  • dest_group — Группа тегов назначения. UInt64
  • src_group — Исходная группа тегов. UInt64
  • tag_to_copy — Имя тега, который нужно скопировать. String
Возвращаемое значение Возвращает группу тегов, содержащую теги из dest_group, а также скопированные теги из src_group. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS dest_group,
       timeSeriesTagsToGroup([('code', '404'), ('message', 'Page not found')], '__name__', 'http_codes') AS src_group,
       timeSeriesCopyTag(dest_group, src_group, '__name__') AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('code','404'),('region','eu')] │
└────────────┴───────────┴──────────────┴────────────────────────────────────────────────────────────┘

timeSeriesCopyTags

Добавленный в: v26.1.0 Копирует указанные теги из одной группы тегов (src_group) в другую (dest_group). Функция заменяет все предыдущие значения скопированных тегов в dest_group. Если какие-либо из копируемых тегов отсутствуют в src_group, функция также удалит их из dest_group. Функция повторяет логику копирования модификаторов group left/group right в Prometheus: group left/group right. Синтаксис
timeSeriesCopyTags(dest_group, src_group, tags_to_copy)
Аргументы
  • dest_group — Целевая группа тегов. UInt64
  • src_group — Исходная группа тегов. UInt64
  • tags_to_copy — Имена тегов для копирования. Array(String)
Возвращаемое значение Возвращает группу тегов, которая содержит теги из dest_group, а также скопированные теги из src_group. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS dest_group,
       timeSeriesTagsToGroup([('code', '404'), ('message', 'Page not found')], '__name__', 'http_codes') AS src_group,
       timeSeriesCopyTags(dest_group, src_group, ['__name__', 'code', 'env']) AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('code','404'),('region','eu')] │
└────────────┴───────────┴──────────────┴────────────────────────────────────────────────────────────┘

timeSeriesExtractTag

Добавленный в: v26.1.0 Извлекает значение указанного тега из группы. Если тег не найден, возвращает NULL. См. также функцию timeSeriesGroupToTags(). Синтаксис
timeSeriesExtractTag(group)
Аргументы
  • group — Группа тегов. UInt64
  • tag_to_extract — Имя тега, который нужно извлечь из группы. String
Возвращаемое значение Возвращает значение указанного тега. Nullable(String) Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesExtractTag(group, '__name__'),
       timeSeriesExtractTag(group, 'env'),
       timeSeriesExtractTag(group, 'instance')
Response
┌─group─┬─timeSeriesExtractTag(group, '__name__')─┬─timeSeriesExtractTag(group, 'env')─┬─timeSeriesExtractTag(group, 'instance')─┐
│     1 │ http_requests_count                     │ dev                                │ ᴺᵁᴸᴸ                                    │
└───────┴─────────────────────────────────────────┴────────────────────────────────────┴─────────────────────────────────────────┘

timeSeriesFromGrid

Добавленный в: v25.8.0 Преобразует массив значений [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)]. Синтаксис
timeSeriesFromGrid(start_timestamp, end_timestamp, step, values)
Аргументы Возвращаемое значение Возвращает значения из исходного массива вместе с временными метками на равномерной временной сетке, заданной start_timestamp и step. Array(Tuple(DateTime64, Float64)) Примеры Пример использования
Query
SELECT timeSeriesFromGrid('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:30.000'::DateTime64(3), 30, [10, 20, NULL, 30]) AS result;
Response
┌─────────────────────────────────────────────result─────────────────────────────────────────────┐
│ [('2025-06-01 00:00:00.000',10),('2025-06-01 00:00:30.000',20),('2025-06-01 00:01:30.000',30)] │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesGroupToSamplingKey

Добавленный в: v26.4.0 Возвращает стабильный ключ выборки UInt64, вычисляемый на основе тегов указанной группы. Значение детерминировано: одинаковые входные теги всегда дают один и тот же ключ. Предназначен для использования в качестве ключа сортировки для операторов сэмплирования, таких как limitk и limit_ratio. Синтаксис
timeSeriesGroupToSamplingKey(group)
Аргументы
  • group — Группа тегов. UInt64
Возвращаемое значение Стабильный хеш UInt64, полученный из тегов, связанных с группой. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToSamplingKey(group) AS sampling_key
Response
┌─group─┬─────────sampling_key─┐
│     1 │ 12876543210987654321 │
└───────┴──────────────────────┘

timeSeriesGroupToTags

Добавленный в: v26.1.0 Возвращает имена и значения тегов, связанных с указанной группой. См. также функцию timeSeriesTagsToGroup(). Синтаксис
timeSeriesGroupToTags(group)
Псевдонимы: timeSeriesTagsGroupToTags Аргументы
  • group — группа тегов. UInt64
Возвращаемое значение Возвращает массив пар (tag_name, tag_value). Возвращаемый массив всегда отсортирован по tag_name и не содержит повторяющихся значений tag_name. Array(Tuple(String, String)) Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToTags(group) AS sorted_tags,
       timeSeriesTagsToGroup(sorted_tags) AS same_group,
       throwIf(same_group != group)
Response
┌─group─┬─sorted_tags────────────────────────────────────────────────────────┬─same_group─┬─throwIf(notE⋯up, group))─┐
│     1 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │          1 │                        0 │
└───────┴────────────────────────────────────────────────────────────────────┴────────────┴──────────────────────────┘

timeSeriesIdToGroup

Добавленный в: v26.1.0 Возвращает имена и значения тегов, связанных с указанным идентификатором временного ряда. См. также функцию timeSeriesStoreTags(). Синтаксис
timeSeriesIdToGroup(id)
Псевдонимы: timeSeriesIdToTagsGroup Аргументы Возвращаемое значение Возвращает группу тегов, связанную с идентификатором id временного ряда. UInt64 Примеры Пример
Query
SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToGroup(same_id) AS group,
       timeSeriesGroupToTags(group)
Response
┌────────────id─┬───────same_id─┬─throwIf(notE⋯me_id, id))─┬─group─┬─timeSeriesGroupToTags(group)───────────────────────────────────────┐
│ 8374283493092 │ 8374283493092 │                        0 │     1 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴──────────────────────────┴───────┴────────────────────────────────────────────────────────────────────┘

timeSeriesIdToTags

Добавленный в: v25.8.0 Возвращает теги, связанные с указанным идентификатором временного ряда. См. также функцию timeSeriesStoreTags(). Синтаксис
timeSeriesIdToTags(id)
Аргументы Возвращаемое значение Возвращает массив пар (tag_name, tag_value). Возвращаемый массив всегда отсортирован по tag_name и не содержит повторяющихся значений tag_name. Array(Tuple(String, String)) Примеры Пример
Query
SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id)
Response
┌────────────id─┬───────same_id─┬─throwIf(notE⋯me_id, id))─┬─timeSeriesIdToTags(same_id)────────────────────────────────────────┐
│ 8374283493092 │ 8374283493092 │                        0 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴──────────────────────────┴────────────────────────────────────────────────────────────────────┘

timeSeriesJoinTags

Добавленный в: v26.1.0 Объединяет значения указанных тегов, извлечённых из группы тегов. Функция вставляет разделитель между объединяемыми значениями и возвращает новую группу тегов, в которой тегу dest_tag присваивается объединённое значение. Эта функция повторяет логику функции Prometheus label_join(). Синтаксис
timeSeriesJoinTags(group, dest_tag, separator, src_tags)
Аргументы
  • group — Группа тегов. UInt64
  • dest_tag — Имя тега с объединённым значением, который будет добавлен в group. String
  • separator — Разделитель, вставляемый между объединяемыми значениями. String
  • src_tags — Имена исходных тегов, значения которых будут объединены. Array(String)
Возвращаемое значение Возвращает новую группу тегов, в которой тег dest_tag содержит объединённый результат. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('src1', 'a'), ('src2', 'b'), ('src3', 'c')]) AS group,
       timeSeriesJoinTags(group, 'foo', ',', ['src1', 'src2', 'src3']) AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─────────────────────────────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a,b,c'),('job','api-server'),('src1','a'),('src2','b'),('src3','c')] │
└───────┴──────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesRange

Добавленный в: v25.8.0 Генерирует диапазон временных меток [start_timestamp, start_timestamp + step, start_timestamp + 2 * step, …, end_timestamp]. Если start_timestamp равен end_timestamp, функция возвращает массив из одного элемента: [start_timestamp]. Функция timeSeriesRange() похожа на функцию range. Синтаксис
timeSeriesRange(start_timestamp, end_timestamp, step)
Аргументы Возвращаемое значение Возвращает диапазон временных меток. Array(DateTime64) Примеры Пример использования
Query
SELECT timeSeriesRange('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:00'::DateTime64(3), 30)
Response
┌────────────────────────────────────result─────────────────────────────────────────┐
│ ['2025-06-01 00:00:00.000', '2025-06-01 00:00:30.000', '2025-06-01 00:01:00.000'] │
└───────────────────────────────────────────────────────────────────────────────────┘

timeSeriesRemoveAllTagsExcept

Добавленный в: v26.1.0 Удаляет из группы тегов все теги, кроме указанных. См. также функцию timeSeriesRemoveTag(), timeSeriesRemoveTags(). Синтаксис
timeSeriesRemoveAllTagsExcept(group, tags_to_keep)
Аргументы
  • group — Группа тегов. UInt64
  • tags_to_keep — Имена тегов, которые нужно сохранить в группе. Array(String)
Возвращаемое значение Новая группа тегов, в которой сохранены только указанные теги. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesRemoveAllTagsExcept(group, ['env']) AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─┐
│     1 │            2 │ [('env','dev')]                     │
└───────┴──────────────┴─────────────────────────────────────┘

timeSeriesRemoveTag

Добавленный в: v26.1.0 Удаляет указанный тег из группы тегов. Если такого тега в группе нет, группа возвращается без изменений. См. также функцию timeSeriesRemoveTags(), timeSeriesRemoveAllTagsExcept(). Синтаксис
timeSeriesRemoveTag(group, tag_to_remove)
Аргументы
  • group — Группа тегов. UInt64
  • tag_to_remove — Имя тега, который нужно удалить из группы. String
Возвращаемое значение Новая группа тегов без указанного тега. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group_of_3,
       timeSeriesRemoveTag(group_of_3, '__name__') AS group_of_2,
       timeSeriesGroupToTags(group_of_2),
       timeSeriesRemoveTag(group_of_2, 'env') AS group_of_1,
       timeSeriesGroupToTags(group_of_1),
       timeSeriesRemoveTag(group_of_1, 'region') AS empty_group,
       timeSeriesGroupToTags(empty_group)
Response
┌─group_of_3─┬─group_of_2─┬─timeSeriesGroupToTags(group_of_2)─┬─group_of_1─┬─timeSeriesGroupToTags(group_of_1)─┬─empty_group─┬─timeSeriesGroupToTags(empty_group)─┐
│          1 │          2 │ [('env','dev'),('region','eu')]   │          3 │ [('region','eu')]                 │           0 │ []                                 │
└────────────┴────────────┴───────────────────────────────────┴────────────┴───────────────────────────────────┴─────────────┴────────────────────────────────────┘

timeSeriesRemoveTags

Добавленный в: v26.1.0 Удаляет указанные теги из группы тегов. Если некоторые из указанных тегов отсутствуют в группе тегов, функция игнорирует их. См. также функцию timeSeriesRemoveTag(), timeSeriesRemoveAllTagsExcept(). Синтаксис
timeSeriesRemoveTags(group, tags_to_remove)
Аргументы
  • group — Группа тегов. UInt64
  • tags_to_remove — Имена тегов, которые нужно удалить из группы. Array(String)
Возвращаемое значение Новая группа тегов, из которой удалены указанные теги. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group_of_3,
       timeSeriesRemoveTags(group_of_3, ['env', 'region']) AS group_of_1,
       timeSeriesGroupToTags(group_of_1),
       timeSeriesRemoveTags(group_of_1, ['__name__', 'nonexistent']) AS empty_group,
       timeSeriesGroupToTags(empty_group)
Response
┌─group_of_3─┬─group_of_1─┬─timeSeriesGroupToTags(group_of_1)────┬─empty_group─┬─timeSeriesGroupToTags(empty_group)─┐
│          1 │          2 │ [('__name__','http_requests_count')] │           0 │ []                                 │
└────────────┴────────────┴──────────────────────────────────────┴─────────────┴────────────────────────────────────┘

timeSeriesReplaceTag

Добавленный в: v26.1.0 Сопоставляет регулярное выражение regex со значением тега src_tag. Если совпадение найдено, значением тега dest_tag в возвращаемой группе будет результат раскрытия replacement вместе с исходными тегами во входных данных. Эта функция повторяет логику функции Prometheus label_replace(). Синтаксис
timeSeriesReplaceTag(group, dest_tag, replacement, src_tag, regex)
Аргументы
  • group — Группа тегов. UInt64
  • dest_tag — Имя тега назначения, в который записывается результирующая группа. String
  • replacement — Шаблон замены; может содержать 1,1, 2 или $name для ссылки на захватывающие группы в регулярном выражении ‘regex’. String
  • src_tag — Имя тега, значение которого используется для сопоставления с регулярным выражением ‘regex’. String
  • regex — Регулярное выражение. String
Возвращаемое значение Новая группа тегов, в которую может быть добавлен dest_tag. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('service', 'a:c')]) AS group,
       timeSeriesReplaceTag(group, 'foo', '$1', 'service', '(.*):.*') AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a'),('job','api-server'),('service','a:c')] │
└───────┴──────────────┴────────────────────────────────────────────────────────────────────────┘

timeSeriesStoreTags

Добавленный в: v25.8.0 Сохраняет в контексте запроса соответствие между указанным идентификатором временного ряда и набором тегов. Функции timeSeriesIdToTags() и timeSeriesIdToGroup() можно использовать для доступа к этому соответствию позже, во время выполнения запроса. Синтаксис
timeSeriesStoreTags(id, tags_array, separate_tag_name_1, separate_tag_value_1, ...)
Аргументы Возвращаемое значение Возвращает идентификатор временного ряда (то есть первый аргумент). Примеры Пример
Query
SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id),
       timeSeriesGroupToTags(timeSeriesIdToGroup(same_id))
Response
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─timeSeriesIdToTags(same_id)────────────────────────────────────────┬─timeSeriesGroupToTags(timeSeriesIdToGroup(same_id))────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘

timeSeriesTagsToGroup

Добавленный в: v26.1.0 Возвращает группу тегов, связанную с указанными тегами. Если одна и та же группа тегов встречается несколько раз в ходе выполнения запроса, функция возвращает одну и ту же группу. Для пустого множества тегов функция всегда возвращает 0. См. также функцию timeSeriesGroupToTags(). Синтаксис
timeSeriesTagsToGroup(tags_array, tag_name_1, tag_value_1, tag_name2, tag_value2, ...)
Аргументы Возвращаемое значение Возвращает группу тегов, связанную с указанными тегами. UInt64 Примеры Пример
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group1,
       timeSeriesTagsToGroup([], '__name__', 'http_failures') AS group2,
       timeSeriesTagsToGroup([]) AS empty_group,
       timeSeriesTagsToGroup([], '__name__', 'http_failures') AS same_group2,
       throwIf(same_group2 != group2),
       timeSeriesGroupToTags(group2)
Response
┌─group1─┬─group2─┬─empty_group─┬─same_group2─┬─throwIf(notEquals(same_group2, group2))─┬─timeSeriesGroupToTags(group2)──┐
│      1 │      2 │           0 │           2 │                                       0 │ [('__name__','http_failures')] │
└────────┴────────┴─────────────┴─────────────┴─────────────────────────────────────────┴────────────────────────────────┘

timeSeriesThrowDuplicateSeriesIf

Добавленный в: v26.2.0 Проверяет condition и, если оно истинно, генерирует исключение со следующим сообщением: Multiple series have the same tags <tags>, duplicate series in the same result set are not allowed. Если condition ложно, функция возвращает 0. Эта функция похожа на throwIf(), но использует другой код ошибки и по-другому форматирует сообщение об ошибке. Синтаксис
timeSeriesThrowDuplicateSeriesIf(condition, group)
Аргументы
  • condition — Условие, которое нужно проверить; обычно содержит функцию count() UInt8
  • group — Группа тегов. UInt64
Возвращаемое значение Возвращает 0. UInt8 Примеры Пример
Query
CREATE TABLE test(tags Array(Tuple(String, String))) engine=Memory;

INSERT INTO test VALUES ([('__name__', 'up')]);

SELECT timeSeriesTagsToGroup(tags) AS group
FROM test
GROUP BY group
HAVING timeSeriesThrowDuplicateSeriesIf(count() > 1, group) = 0;  -- ОК

INSERT INTO test VALUES ([('__name__', 'up')]);

SELECT timeSeriesTagsToGroup(tags) AS group
FROM test
GROUP BY group
HAVING timeSeriesThrowDuplicateSeriesIf(count() > 1, group) = 0;  -- Генерирует исключение "Multiple series have the same tags {'__name__': 'up'}"
Response
Последнее изменение 10 июня 2026 г.