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

Если у меня есть таблица, какая структура была обновлена ​​(то есть 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

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 - название вашего кластера.

Спасибо: Alexander Bocharov

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

Другие вопросы по тегам