Это экспериментальная возможность, которая в будущих релизах может измениться с нарушением обратной совместимости.
Включите использование движка таблицы 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
Таблица tags содержит идентификаторы, вычисляемые для каждой комбинации имени метрики и тегов.
Таблица tags должна содержать следующие столбцы:
Таблица metrics
Любая строка, вставленная в таблицу
TimeSeries, фактически будет сохранена в этих трёх целевых таблицах.
Таблица TimeSeries содержит все эти столбцы из таблиц данных, tags, metrics.
Создание
TimeSeries можно создать несколькими способами.
Самый простой оператор
SHOW CREATE TABLE my_table):
.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_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 в качестве аргумента: