Утилита миграции из CountMax

Gui

image-1674645768919.png

GUI реализовано в виде однооконного приложения.

Параметры

База CountMax

в режиме "Выгрузить", "Миргация" указывается имя базы CountMax. В режиме "Загрузить" - путь до папки с выгруженными данными.

База ClickHouse

имя базы в clickhouse в которую будут загружаться данные.

Выгрузка за
Количество дней для выгрузки

количество дней для выгрузки данных метрик. Целое положительное число. Если значение равно 0 - будут выгружаться все данные. Параметр применяется только при параметре "Выгрузка за" равному "количество дней"

Период выгрузки

период выгрузки данных метрик. Задается по кнопке "Задать период выгрузки". Параметр применяетя только при параметре "Выгрузка за" равному "период".

Можно выбрать дату начала или дату окончания или дату начала + дату окончания или ничего не выбрать

image-1674646348921.pngimage-1674646366629.png

image-1674646374879.pngimage-1674646388615.png

Для применения фильтра нужно нажать "Применить"

Загрузка метрик

флаг загрузки метрик. если выбран - метрики грузятся

Удалить временные данные

удалять временные данные после загрузки данных

Действия

Конфигурация

Открывает конфиг утилиты для редактирования в редакторе текста по умолчанию

Выгрузить

Запускает выгрузку из базы 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
Загрузка агрегированных метрик ClickHouse
spp.exe metrics load [OPTIONS] DATABASE PATH
Выполнить миграцию из базы источника в базу приемника
spp.exe metrics migrate [OPTIONS] SRC_DB DEST_DB
Поиск timezone
spp.exe metrics timezones SEARCH

Конфиг

Конфиг представляет собой 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}}"
     }
}

changelog

2023.5.1
2023.3.1
2023.2.5
2023.2.3

Принципы выборки метрик

Метрики

Фильтрация "По умолчанию"

  1. Делается выборка со всех проходов из таблицы CM_Sensor и поля AddHour из таблицы CM_Controller (INNER JOIN)
  2. Делается выборка со всех проходов из таблицы CM_Enter (связанный проект должен быть активен) и поля AddHour из таблиц CM_Floor и CM_Project (если во CM_Floor поле пустое - берется из CM_Project)
  3. Делается слияние выборок из 1 и 2 пунктов. Если AddHour из 1 выгрузки пустой - берется из 2й
  4. Делается выборка метрик из таблицы CM_StorageEnter и выборки из п.3. Строки с пустым AddHour пропускаются.
    1. Фильтрация по дате метрики

Фильтрация "Только активные"

  1. Выполняются все пункты из раздела "Фильтрация "По умолчанию""
  2. Выполняется фильтрация по проходам из выгруженного проекта (см. ниже)

Фильтрация "Только неактивные"

  1. Выполняются все пункты из раздела "Фильтрация "По умолчанию""
  2. Выполняется фильтрация по проходам из выгруженного проекта (см. ниже)

Проект

Фильтрация "По умолчанию"

В итоговую выборку попадают:

  1. Активные проходы (CM_Enter.IsEnabled == 1)
  2. Активные зоны (CM_Zone.IsEnabled == 1)
  3. Активные арендаторы (CM_Arendator.IsEnabled == 1)
  4. Активные контроллеры (CM_Controller.IsEnabled == 1)

Фильтрация "Только активные"

В итоговую выборку попадают:

  1. Активные проходы (CM_Enter.IsEnabled == 1)
  2. Активные зоны (CM_Zone.IsEnabled == 1)
  3. Активные арендаторы (CM_Arendator.IsEnabled == 1)
  4. Активные контроллеры (CM_Controller.IsEnabled == 1)
  5. Активные соединения (CM_Connection.IsEnabled == 1)
  6. Активные сенсоры (CM_Sensor.IsEnabled == 1)

Фильтрация "Только неактивные"

В итоговую выборку попадают:

  1. Неактивные проходы (CM_Enter.IsEnabled == 0)
  2. Неактивные зоны (CM_Zone.IsEnabled == 0)
  3. Неактивные арендаторы (CM_Arendator.IsEnabled == 0)
  4. Неактивные контроллеры (CM_Controller.IsEnabled == 0)
  5. Неактивные соединения (CM_Connection.IsEnabled == 0)
  6. Неактивные сенсоры (CM_Sensor.IsEnabled == 0)

При отсутствии сущности (NULL), сущность считается неактивной