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
В общем случае: после изменения базовой таблицы вам необходимо заново создать (или изменить) распределенную таблицу.