Clickhouse изменяет материализованное представление - PullRequest
0 голосов
/ 31 мая 2018

У меня есть следующие настройки:

CREATE TABLE IF NOT EXISTS request_income_buffer (
    timestamp UInt64,
    timestamp_micro Float32,
    traceId Int64,
    host String,
    type String,
    service String,
    message String,
    caller String,
    context String
) ENGINE = Kafka('kafka:9092', 'request_income', 'group', 'JSONEachRow');

CREATE MATERIALIZED VIEW IF NOT EXISTS request_income
ENGINE = MergeTree(date, microtime, 8192) AS
    SELECT
        toDate(toDateTime(timestamp)) AS `date`,
        toDateTime(timestamp) as `date_time`,
        timestamp,
        timestamp_micro AS `microtime`,
        traceId,
        host,
        type,
        service,
        message,
        caller,
        context
    FROM
        request_income_buffer;

Я хочу добавить новый столбец, напр.ip до my request_income таблица.Согласно документам, для этого мне нужно будет выполнить следующие шаги:

  1. Отключить просмотр, чтобы прекратить получать сообщения от Кафки.

    DETACH TABLE request_income;

  2. Удалить таблицу, которая передает данные из Kafka, поскольку движок Kafka не поддерживает ALTER запросов.

    DROP TABLE request_income_buffer

  3. Воссоздать таблицу для потоковой передачи данных из Kafka с новым полем.

    CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ request_income_buffer(временная метка UInt64, timestamp_micro Float32, traceId Int64, строка хоста, строка ip, тип String, строка службы, строка сообщения, строка вызывающего абонента, строка контекста) ENGINE = Kafka ('kafka: 9092', 'request_income', 'group', 'JSONEachRow ');

  4. В соответствии с этим post update. Внутренняя таблица отдельного материализованного представления

    ALTER TABLE `.inner.request_income` ADD COLUMN ip String ПОСЛЕ хоста;

  5. В соответствии с сообщением, приведенным выше, обновленный запрос представления представления

  6. Присоединить представление

    ТАБЛИЦА ПРИЛОЖЕНИЙ request_income

Вопрос в том, как обновить запрос выбора представления?

1 Ответ

0 голосов
/ 31 мая 2018

Таким образом, представляется, что способ обновления запроса выбора материализованного представления заключается в следующем:

  1. Получить путь к метаданным представлений

    SELECT metadata_path FROM system.tables WHERE name = 'request_income';

  2. Используйте ваш любимый текстовый редактор для изменения вида представления.В моем случае отредактированный sql будет выглядеть как

    ATTACH MATERIALIZED VIEW request_income (дата Date, date_time DateTime, временная метка UInt64, микротайм Float32, traceId Int64, строка хоста, ip String, типСтрока, служебная строка, строка сообщения, строка вызывающего абонента, строка контекста) ENGINE = MergeTree (date, microtime, 8192) AS SELECT toDate (toDateTime (timestamp)) AS date, toDateTime (timestamp) AS date_time, timestamp, timestamp_micro AS microtime, traceId, хост, ip , тип, сервис, сообщение, вызывающая сторона, контекст FROM default.request_income_buffer

  3. Присоединить измененный вид назад

    ТАБЛИЦА ПРИЛОЖЕНИЙ request_income;

...