ClickHouse (ReplacingMergeTree). Выгрузка данных справочника
Зачастую в работе аналитика возникает необходимость хранить в аналитической базе данных не только какие-то сводные данные (о продажах, выручке и т.п.), но и просто справочник. Причем так, чтобы справочник был актуален в любой момент времени. Можно настроить частую выгрузку, но если справочник очень большой, то выгрузка в разрезе «Партиций» может быть очень накладной по временным расходам. Для решения этой задачи лучше использовать механизм ClickHouse, называемый «ReplacingMergeTree» (в терминах ClickHouse - это называется «движок»). По своей сути - это возможность добавлять новые данные, не удаляя перед этим старые, т.к. движок ClickHouse сам уберет задвоения с одинаковым значением ключа сортировки. Подробнее об этом можно прочитать, пройдя по ссылке: ReplacingMergeTree в ClickHouse. Т.е. мы можем просто добавлять данные, которые были изменены или добавлены, а ClickHouse сам уберет дублирующиеся строки. Если настроить расписание выгрузки достаточно часто (например, раз в 5 секунд), то получится практически выгрузка в режиме «реального времени».
Схематично этот механизм можно представить следующим образом:
Рассмотрим подробно по шагам, как следует настроить проект на примере выгрузки справочника «Партнеры»:
Пример протестирован на версии 3.4.2.3.
создайте новый проект по инструкции (Этап 1) и нажмите кнопку “Добавить”, чтобы начать конструировать строку проекта.
Выберите “Объект”, укажите справочник “Партнеры” и нажмите “Далее”
выберите «Настроить параметры» > Далее. Откроется форма выбора параметров источника.
В ней надо выбрать параметр «Ссылка» , остальные параметры удалить, чтобы в отбор всегда попадали уникальные значения (ссылка на справочник) и нажать> Далее
настройте выбранные поля (какие вам нужны), не удаляя при этом параметр “Ссылка” и нажмите “Далее”
в вычисляемых полях вычислим гуид ссылки. Он понадобится движку Clickhouse для идентификации, кто здесь дубль, а кто нет. По нему мы будем устанавливать ключ сортировки (об этом чуть позже)
Создадим новую таблицу, т.к. это новая выгрузка
На этапе сопоставления полей установим галку признака сегмента (в принципе, она установится по умолчанию сама).
заходим в “Расширенные настройки”.
Выбираем движок - ReplacingMergeTree
Партиции оставляем пустыми
а на закладке “Ключ сортировки” указываем гуид ссылки
Завершите мастер создания строки проекта, нажатием на “Далее”
Теперь необходимо донастроить строку проекта. Для этого надо выделить строку, нажать на и заполнить параметры, как показано на рисунке:
Теперь можно «инициализировать проект». При инициализации, Очередь будет заполнена всеми значениями справочника Партнеры.Ссылка
Затем выполним проект
Что будет происходить далее?
вам необходимо будет настроить расписание и сохранить проект
Каждый раз, когда у вас будет перезаписан элемент справочника - запись с этим справочником попадет в очередь.
Далее, по своему расписанию, Проект будет добавлять эти элементы справочника в таблицу Clickhouse, создавая «дубли» (повторяющиеся элементы) записей.
а Clickhouse по своему расписанию, будет удалять повторяющиеся значения (по полю сортировки) (это расписание никому точно не известно)
Чтобы увидеть данный справочник без дублей, используйте не просто Select, а:
Select from Справочник FINALИли применяйте команду:
OPTIMIZE TABLE Справочник