Перейти к содержанию

Перенос данных в ClickHouse

В некоторых случаях возможно возникновение такой ситуации, что в БД ClickHouse, откуда берутся данные для работы Статистики v2, по тем или иным причинам отсутствуют данные за какие-либо промежутки времени. Для исправления этой проблемы, начиная с версии Webim 10.6, доступна возможность вручную запустить перенос статистических данных из БД (схемы в случае PostgreSQL) pro в БД ClickHouse с помощью скрипта populate_clickhouse.sh.

Порядок действий для переноса данных

  1. Определитесь с временным промежутком, за который вам необходимо перенести данные. Для этого ниже предоставлены некоторые рекомендации:

    Внимание!

    На границах временных промежутков могут проявляться "артефакты" переноса, так что мы рекомендуем закладывать дополнительные сутки по обоим краям промежутка.

    • В случае, если у Вас имеется один большой пробел с отсутствующими данными, временной промежуток стоит ограничить только им.

    • В случае, если у Вас имеется несколько больших пробелов в данных, разделённых малыми промежутками (например, 2-3 дня), в которых данные присутствуют, включите во временной промежуток весь период от начала первого пробела до конца последнего.

    • В случае, если у Вас имеется несколько больших пробелов в данных, разделённых средними по размеру промежутками (не более недели в масштабах месяца), в которых данные присутствуют, вы можете как задать в качестве временного промежутка весь период от начала первого пробела до конца последнего, так и обрабатывать каждый пробел как отдельный временной промежуток.

    • В случае, если у Вас имеется несколько больших пробелов в данных, разделённых большими промежутками, в которых данные присутствуют, мы рекомендуем обрабатывать каждый пробел как отдельный временной промежуток.

    • В случае небольшого промежутка (меньше суток) битых данных Вы можете определить промежуток как с учётом данной выше рекомендации о дополнительных сутках по краям промежутков, так и без него

  2. Перейдите в виртуальное окружение Chat Backend

  3. Запустите скрипт populate_clickhouse.sh.

    Синтаксис:

    populate_clickhouse.sh [-v] -a=account_name -df=dd-mm-yyyy -dt=dd-mm-yyyy
    

    Значения параметров приведены ниже:

    • -v | --verbose - вывод дополнительной информации о процессе переноса данных в терминал

    • -a | --account - имя аккаунта в Webim, обязательно

    • -df | --dtmfrom - начало периода, за который переносятся данные, обязательно

    • -dt | --dtmto - конец периода, за который переносятся данные, обязательно

    N.B.

    Получившийся временной период не будет включать в себя день, указанный в параметре -dt, т.е. концом периода, за который будут перенесены данные, будет считаться 23:59:59 предыдущего дня.

Также стоит отметить, что длительность выполнения переноса данных зависит от количества данных в БД pro за указанный во временном промежутке период и текущей нагрузке на неё. В случае особо больших промежутков и/или особо большого количества данных в БД pro в указанном промежутке, а также сильной нагрузки на неё в момент переноса, перенос данных может затянуться на многие часы, так что к выбору временного промежутка необходимо подходить с умом.