Утилита миграции из CountMax
Gui
GUI реализовано в виде однооконного приложения.
Параметры
База CountMax
в режиме "Выгрузить", "Миргация" указывается имя базы CountMax. В режиме "Загрузить" - путь до папки с выгруженными данными.
База ClickHouse
имя базы в clickhouse в которую будут загружаться данные.
Выгрузка за
- количество дней - количество дней (начиная от текущей даты) за которое будут выгружаться данные
- период - период выгрузки данных
Количество дней для выгрузки
количество дней для выгрузки данных метрик. Целое положительное число. Если значение равно 0 - будут выгружаться все данные. Параметр применяется только при параметре "Выгрузка за" равному "количество дней"
Период выгрузки
период выгрузки данных метрик. Задается по кнопке "Задать период выгрузки". Параметр применяетя только при параметре "Выгрузка за" равному "период".
Можно выбрать дату начала или дату окончания или дату начала + дату окончания или ничего не выбрать
Для применения фильтра нужно нажать "Применить"
Загрузка метрик
флаг загрузки метрик. если выбран - метрики грузятся
Удалить временные данные
удалять временные данные после загрузки данных
Действия
Конфигурация
Открывает конфиг утилиты для редактирования в редакторе текста по умолчанию
Выгрузить
Запускает выгрузку из базы CountMax на локальный диск
Загрузить
Запускает загрузка данных с локального диска в базу clickhouse
Миграция
Запускает выгрузку из базы CountMax на локальный диск, а потом загрузку с диска в clickhouse
cli
Конфиг
Редактирование
spp.exe conf edit
Вывод
spp.exe conf print
Удаление
spp.exe conf rm
Данные
Открыть кэш соответствия баз источника и приемника
spp.exe metrics cache
Выгрузка агрегированных метрик в из MSSQL в CSV
spp.exe metrics unload [OPTIONS] DATABASE
- OPTIONS - опции
- -l NUM Количество дней от текущей даты в UTC, за которые будет выполнена выгрузка
- -tz, --timezone / -ntz, --no-timezone. Вкл/Выкл указание таймзон [default: ntz]
- --date-begin YYYY-MM-DD. Выгружать метрики с датой от YYYY-MM-DD
- --date-end %Y-%m-%d. Выгружать метрики с датой до YYYY-MM-DD
- DATABASE - имя базы-источника для выгрузки данных
Загрузка агрегированных метрик ClickHouse
spp.exe metrics load [OPTIONS] DATABASE PATH
- OPTIONS
- -m, --metrics / -nm, --no-metrics, Вкл/Выкл. загрузку метрик [default: m]
- -tz, --timezone / -ntz, --no-timezone, Вкл/Выкл указание таймзон [default: ntz]
- DATABASE - база clickhouse для загрузки данных
- PATH - путь до выгруженных csv файлов
Выполнить миграцию из базы источника в базу приемника
spp.exe metrics migrate [OPTIONS] SRC_DB DEST_DB
- OPTIONS
- -m, --metrics / -nm, --no-metrics, Вкл/Выкл. загрузку метрик [default: m]
- -l NUM, Количество дней от текущей даты в UTC, за которые будет выполнена выгрузка
- -tz, --timezone / -ntz, --no-timezone Вкл/Выкл указание таймзон [default: ntz]
- --date-begin YYYY-MM-DD. Выгружать метрики с датой от YYYY-MM-DD
- --date-end %Y-%m-%d. Выгружать метрики с датой до YYYY-MM-DD
- SRC_DB - имя базы-источника для выгрузки данных
- DEST_DB - база clickhouse для загрузки данных
Поиск timezone
spp.exe metrics timezones SEARCH
- SEARCH - строка поиска timezone
Конфиг
Конфиг представляет собой json сохраненный в текстовом файле config.jsonc
{
"clickhouse": {
"host": "HOST",
"user":"USER",
"password":"PASSWD"
},
"mssql": {
"connection": "Data Source=PATH_TO_SERVER;Initial Catalog={{db_id}};Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;",
"destination": "С:\\{{db_id}}"
}
}
- clickhouse - блок настроек подключения к ClickHouse
- HOST - адрес подключения в формате HOSTNAME[:PORTNUM]
- USER - имя пользователя
- PASSWD - пароль пользователя
- mssql - блок настроек подключения к MSSQL для выгрузки исторических данных CountMax
- connection - строка подключения к MSSQL для исполнения ssis пакета выгрузки
- PATH_TO_SERVER - заменить на адрес подключения к серверу
- Если не используется авторизация ОС, добавить в конец User Id=USERNAME;Password=PASSWORD;
- USERNAME и PASSWORD заменить на имя пользователя и пароль соответственно
- destination - Каталог, в который будут складываться файлы выгрузки
- {{db_id}} - макрос для автоматической подстановки имени баз
- connection - строка подключения к MSSQL для исполнения ssis пакета выгрузки
changelog
2023.5.1
- В gui добавлена кнопка "Справка"
2023.3.1
- фикс отображения прогресса загрузки в gui
- фикс скрипта сборки
2023.2.5
- фикс строки соединения в конфиге
- фикс логгера
- фикс кодировки файла выгрузки
2023.2.3
- переработка логики выгрузки (переход с утилиты dexec на библиотеку pyodbc)
- фикс ротации лога
- добавлена фильтрация по активным/неактивным сущностям проекта
- мелкие фиксы gui
Принципы выборки метрик
Метрики
Фильтрация "По умолчанию"
- Делается выборка со всех проходов из таблицы CM_Sensor и поля AddHour из таблицы CM_Controller (INNER JOIN)
- Делается выборка со всех проходов из таблицы CM_Enter (связанный проект должен быть активен) и поля AddHour из таблиц CM_Floor и CM_Project (если во CM_Floor поле пустое - берется из CM_Project)
- Делается слияние выборок из 1 и 2 пунктов. Если AddHour из 1 выгрузки пустой - берется из 2й
- Делается выборка метрик из таблицы CM_StorageEnter и выборки из п.3. Строки с пустым AddHour пропускаются.
- Фильтрация по дате метрики
Фильтрация "Только активные"
- Выполняются все пункты из раздела "Фильтрация "По умолчанию""
- Выполняется фильтрация по проходам из выгруженного проекта (см. ниже)
Фильтрация "Только неактивные"
- Выполняются все пункты из раздела "Фильтрация "По умолчанию""
- Выполняется фильтрация по проходам из выгруженного проекта (см. ниже)
Проект
Фильтрация "По умолчанию"
В итоговую выборку попадают:
- Активные проходы (CM_Enter.IsEnabled == 1)
- Активные зоны (CM_Zone.IsEnabled == 1)
- Активные арендаторы (CM_Arendator.IsEnabled == 1)
- Активные контроллеры (CM_Controller.IsEnabled == 1)
Фильтрация "Только активные"
В итоговую выборку попадают:
- Активные проходы (CM_Enter.IsEnabled == 1)
- Активные зоны (CM_Zone.IsEnabled == 1)
- Активные арендаторы (CM_Arendator.IsEnabled == 1)
- Активные контроллеры (CM_Controller.IsEnabled == 1)
- Активные соединения (CM_Connection.IsEnabled == 1)
- Активные сенсоры (CM_Sensor.IsEnabled == 1)
Фильтрация "Только неактивные"
В итоговую выборку попадают:
- Неактивные проходы (CM_Enter.IsEnabled == 0)
- Неактивные зоны (CM_Zone.IsEnabled == 0)
- Неактивные арендаторы (CM_Arendator.IsEnabled == 0)
- Неактивные контроллеры (CM_Controller.IsEnabled == 0)
- Неактивные соединения (CM_Connection.IsEnabled == 0)
- Неактивные сенсоры (CM_Sensor.IsEnabled == 0)
При отсутствии сущности (NULL), сущность считается неактивной