Данные собираются из уже загруженных в базу данных access_log. Процесс включает в себя экспорт данных в новую базу данных, на основе которых и создается финальный отчет.
- Python 2.7
CLICKHOUSE = {
'host': 'localhost',
'port': '9000',
'db_export': '',
'bin': ''
}
BASE_TABLE = ''
FILE_LOG = 'synclogs.txt'
WATCHER = {
'timedelta': 86400*2
}
Скрипт проверяет базу данных db_export
на наличие ещё не обработанных данных не старее чем timedelta
.
Если такие данные будут найдены, то они будут экспортированы в таблицу BASE_TABLE
.
Обработанные данные записываются в файл FILE_LOG
. Если данные в файле совпадают с таблицей, повторно запись не произойдёт.
Скрипт process.py
создаёт таблицу на ноде шарда и в неё импортирует данные из таблиц log_%
:
Ниже код таблицы которая будет создана.
CREATE TABLE {host}.{BASE_TABLE} (
date Date,
type_id UInt16,
item_id UInt32,
tube_id UInt32,
country String,
num_views AggregateFunction(count))
ENGINE = AggregatingMergeTree(date, (date, type_id, tube_id, country, item_id), 8192)
Для запуска из терминала или в кроне использовать команду sh process.sh
.