Как получить данные из распределенной таблицы

Если у меня есть таблица, структура которой была обновлена ​​(например, system.query_log после последнего обновления), но каким-то образом распределенное «представление» все еще имеет старую структуру, как я могу запросить данные новых столбцов из этого кластера?

Что я имел ввиду:

Если у вас есть распределенная таблица, это можно легко сделать:

select count(1) from distributed_query_log where event_date = '2019-01-24'

Но select Settings.names, Settings.values from distributed_query_log where event_date = '2019-01-24' limit 1\G завершится ошибкой, потому что у него нет этих полей, когда system.query_log имеет:

select Settings.names, Settings.values from system.query_log where event_date = '2019-01-24' limit 1\G


person Victor Perov    schedule 24.01.2019    source источник


Ответы (2)


В версии Clickhouse 1.1.54362 была добавлена ​​функция cluster.

Итак, вы можете сделать это:

select Settings.names, Settings.values from cluster('CLUSTER_TITLE', 'system.query_log') where event_date = '2019-01-24' limit 1\G

Где CLUSTER_TITLE - название вашего кластера.

Спасибо: Александр Бочаров

person Victor Perov    schedule 24.01.2019

В общем случае: после изменения базовой таблицы вам необходимо воссоздать (или изменить) распределенную таблицу.

person filimonov    schedule 04.02.2019
comment
действительно, но в случае, когда все ваши SRE заняты, функция cluster готова помочь :) - person Victor Perov; 04.02.2019