Перейти к основному содержанию
Движок таблицы для хранения временных рядов, то есть набора значений, связанных с временными метками и тегами (или метками):
Это экспериментальная возможность, которая в будущих релизах может измениться с нарушением обратной совместимости. Включите использование движка таблицы TimeSeries с помощью настройки allow_experimental_time_series_table. Введите команду set allow_experimental_time_series_table = 1.

Синтаксис

Использование

Проще начать с параметров по умолчанию (таблицу TimeSeries можно создать, не указывая список столбцов):
Затем эту таблицу можно использовать со следующими протоколами (в конфигурации сервера должен быть назначен порт):

Целевые таблицы

У таблицы TimeSeries нет собственных данных — всё хранится в её целевых таблицах. Это похоже на то, как работает materialized view, с той разницей, что у materialized view одна целевая таблица, тогда как у таблицы TimeSeries их три: данные, tags и metrics. Целевые таблицы можно либо явно указать в запросе CREATE TABLE, либо движок таблицы TimeSeries может автоматически сгенерировать внутренние целевые таблицы. Целевые таблицы бывают следующими:

Таблица data

Таблица data содержит временные ряды, связанные с определённым идентификатором. Таблица data должна содержать следующие столбцы:

Таблица tags

Таблица tags содержит идентификаторы, вычисляемые для каждой комбинации имени метрики и тегов. Таблица tags должна содержать следующие столбцы:

Таблица metrics

Таблица metrics содержит информацию о собираемых метриках, их типах и описаниях. Таблица metrics должна иметь следующие столбцы: Любая строка, вставленная в таблицу TimeSeries, фактически будет сохранена в этих трёх целевых таблицах. Таблица TimeSeries содержит все эти столбцы из таблиц данных, tags, metrics.

Создание

Таблицу с движком таблицы TimeSeries можно создать несколькими способами. Самый простой оператор
в результате будет создана следующая таблица (это можно увидеть, выполнив SHOW CREATE TABLE my_table):
Итак, столбцы были сгенерированы автоматически, и в этом операторе также есть три внутренних UUID — по одному для каждой созданной внутренней целевой таблицы. (Внутренние UUID обычно не отображаются, пока не задан параметр show_table_uuid_in_table_create_query_if_not_nil .) Внутренние целевые таблицы имеют имена вида .inner_id.data.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, .inner_id.tags.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, .inner_id.metrics.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, и каждая целевая таблица содержит столбцы, представляющие собой подмножество столбцов основной таблицы TimeSeries:

Настройка типов столбцов

Вы можете изменить типы почти любых столбцов во внутренних целевых таблицах, явно указав их при определении основной таблицы. Например,
приведёт к тому, что внутренняя таблица данные будет хранить временную метку в микросекундах вместо миллисекунд:

Столбец id

Столбец id содержит идентификаторы; каждый идентификатор вычисляется для комбинации имени метрики и тегов. Выражение DEFAULT для столбца id используется для вычисления таких идентификаторов. Как тип столбца id, так и это выражение можно настроить, явно указав их:

Столбцы tags и all_tags

Есть два столбца, содержащих карты тегов, — tags и all_tags. В этом примере они означают одно и то же, однако могут различаться, если используется настройка tags_to_columns. Эта настройка позволяет указать, что определённый тег следует хранить в отдельном столбце, а не в карте внутри столбца tags:
Этот оператор добавит столбцы:
к определениям как my_table, так и её внутренней целевой таблицы tags. В этом случае столбец tags не будет содержать теги instance и job, но столбец all_tags будет их содержать. Столбец all_tags является эфемерным, и его единственное назначение — использоваться в выражении DEFAULT для столбца id. Типы столбцов можно изменить, явно указав их:

Движки внутренних целевых таблиц

По умолчанию внутренние целевые таблицы используют следующие движки таблиц:
  • таблица данные использует MergeTree;
  • таблица tags использует AggregatingMergeTree, поскольку одни и те же данные часто вставляются в эту таблицу несколько раз, поэтому необходим способ удалять дубликаты, а также потому, что для столбцов min_time и max_time требуется выполнять агрегацию;
  • таблица metrics использует ReplacingMergeTree, поскольку одни и те же данные часто вставляются в эту таблицу несколько раз, поэтому необходим способ удалять дубликаты.
Для внутренних целевых таблиц также можно использовать другие движки таблиц, если это указано:

Внешние целевые таблицы

Можно настроить таблицу TimeSeries так, чтобы она использовала таблицу, созданную вручную:

Настройки

Ниже приведён список настроек, которые можно указать при определении таблицы TimeSeries: Ниже приведён список функций, поддерживающих таблицу TimeSeries в качестве аргумента:
Последнее изменение 12 июня 2026 г.