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

Загрузка данных модели

Итоговые данные модели определяются ее структурой. Они доступны к предпросмотру в карточке модели, но для использования модели в виджетах и информационных панелях данные модели необходимо загрузить в хранилище Системы. Загрузка может быть запущена как вручную, так и по расписанию для регулярного обновления данных модели. 

Для проверки загрузки данных в модель нажмите кнопку svg Посмотреть загрузку в Airflow. В новом окне web-браузера откроется интерфейс Apache Airflow с деталями процесса.

img

Если доступа на просмотр модели нет, то вместо дерева шагов процесса откроется окно с сообщением: У вас нет прав на просмотр модели с id . Вернуться назад.

img

Процесс загрузки выполняет:

  • сбор данных из различных источников;
  • преобразование данных в соответствии с бизнес-правилами;
  • загрузка данных в целевое хранилище данных. В качестве хранилища Системы выступает БД ClickHouse (или кластер ClickHouse), в котором построчные данные хранятся в виде столбцов и предоставляется оптимизированная индексация.

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

Для работы с динамически изменяющимися таблицами из внутреннего хранилища Системы, доступен функционал по созданию представлении (view), что позволяет использовать в сторонних системах ClickHouse системы, как источник данных.

Ручная загрузка данных в хранилище

Запустить загрузку или обновить данные модели в аналитическом хранилище вручную можно из интерфейса просмотра или редактирования модели. Для этого нажмите на кнопку img Загрузить данные в хранилище на панели кнопок. В нижнем левом углу окна будут отображаться уведомления о ходе процесса.

img

В процессе синхронизации кнопка img Загрузить данные в хранилище не блокируется, при повторном нажатии на кнопку в режиме просмотра или редактирования отобразится уведомление.

img

Автоматическая загрузка данных в хранилище

Автоматическое обновление данных модели выполняется по планировщику. Доступно два варианта настройки обновления по планировщику:

  • На основе времени - принимает параметр на основе фиксированного расписания;

img

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

img

Настройка обновления данных на основе времени

Настройка регулярного обновления данных модели по расписанию выполняется из интерфейса редактирования модели через меню svg Настройки. В окне Настройки перейдите в раздел Планировщик. Для доступа к разделу Планировщик необходимо иметь совокупность прав на просмотр, редактирование и изменение настроек синхронизации. 

img

Интерфейс настройки обновления данных на основе времени содержит:

  • Включить обновление - позволяет включить или отключить, не удаляя само расписание задачу регулярного обновления данных;

  • выбор режима обновления:

    • На основе времени - принимает параметр на основе фиксированного расписания. Значение по умолчанию;
    • На основе задачи - принимает список наборов данных (моделей), завершение синхронизации выбранных моделей будет служить сигналом к запуску синхронизации текущей модели.
  • расписание обновления:

    • Неделя - позволяет настроить обновление с периодичностью не чаще 1 раза в день и не реже 1 раза в неделю. Доступны дополнительные настройки:

      • Дни недели - выбор дня/дней недели;
      • Время - время старта процесса обновления с точностью до минуты по времени сервера время;
      • img Все дни недели - выбрать все дни недели;
    • Cron-строка - можно реализовать более сложные режимы обновления, преодолевающие описанные ограничения за счет прямого ввода cron-строки. Строка вводится в формате файла linux CRONTAB в соответствии с принятыми правилами ее написания. При вводе cron-выражения под полем ввода отобразится описание настроенного расписания. В случае ввода некорректного cron-выражения под полем ввода отобразится подсказка красного цвета - Некорректное cron-выражение. При сохранении некорректного выражения cron-строки отобразится уведомление об ошибке.

    img     

При попытке задать обновление модели с интервалом менее 5 минут, система отображает предупреждение после нажатия на кнопку img Сохранить. Можно либо изменить интервал обновления, либо подтвердить сохранение текущего расписания.

img

  • img Не выводить push-уведомление - позволяет включить или отключить отображение всплывающих уведомлений в нижнем левом углу экрана при запуске синхронизации модели по планировщику на основе времени или задачи. Уведомления будут продолжать отображаться в разделе Центр управления независимо от состояния настройки. 

После заполнения всех обязательных полей, нажмите на кнопку img Сохранить. В левом нижнем углу окна отобразится уведомление об успешном сохранении.

Настройка обновления данных на основе задачи

Настройка регулярного обновления данных модели по событию выполняется из интерфейса редактирования модели через меню svg Настройки. В окне Настройки перейдите в раздел Планировщик. Для доступа к разделу Планировщик необходимо иметь совокупность прав на просмотр, редактирование и изменение настроек синхронизации. 

img

Интерфейс настройки обновления данных на основе времени содержит:

  • Включить обновление - позволяет включить или отключить, не удаляя само расписание задачу регулярного обновления данных;

  • выбор режима обновления:

    • На основе времени - принимает параметр на основе фиксированного расписания. Значение по умолчанию;
    • На основе задачи - принимает список наборов данных (моделей), завершение синхронизации выбранных моделей будет служить сигналом к запуску синхронизации текущей модели.
  • Список моделей, которые используются в текущей - список моделей, доступных для выбора. Если ни одна модель выбрана не будет, то при сохранении откроется уведомление об ошибке. Если в схеме модели не участвуют другие модели, то список моделей в планировщике будет пуст;

Принцип работы

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

Условия запуска: зависимость одной модели от других строится на основе построения связей между ними через наборы данных, производимых и потребляемых соответствующими этим моделям DAG-конвейерами. В данном случае процесс синхронизации модели рассматривается как задача конвейерной обработки модели по схеме, определяемой в DAG. Результатом исполнения DAG является набор данных, сопоставленный данной модели. Набор данных будет помечен как обновленный только в том случае, если задача завершится успешно. Если задача завершится ошибкой или будет пропущена, обновление набора данных не произойдет, и зависимый DAG не будет запланирован.

Старт запуска: если один набор данных обновляется несколько раз до того, как будут обновлены все потребляемые наборы данных, зависимый DAG все равно будет запущен только один раз.

  • img Не выводить push-уведомление - позволяет включить или отключить отображение всплывающих уведомлений в нижнем левом углу экрана при запуске синхронизации модели по планировщику на основе времени или задачи. Уведомления будут продолжать отображаться в разделе Центр управления независимо от состояния настройки. 

После заполнения всех обязательных полей, нажмите на кнопку img Сохранить. В левом нижнем углу окна отобразится уведомление об успешном сохранении.

Инкрементальная загрузка

Настройка инкрементальной загрузки данных модели выполняется из интерфейса редактирования модели на вкладке Инкрементальная загрузка.  При добавлении блоков данных (таблицы, модели, SQL) на схему связей для каждого такого блока формируются отдельные фрагменты. 

img

Фрагмент включает в себя: 

  • номер фрагмента - фрагменты формируются в том порядке, в каком были добавлены блоки данных на схему связей. При удалении какого-либо блока на схеме связей номера фрагментов обновляются;

  • блок данных - отображается цвет и наименование, что и на схеме связей;

  • кнопка svg - отображается напротив каждого фрагмента. Содержит пункт Настройка для перехода в окно настроек инкрементальной загрузки данных по фрагменту.

Условия и ограничения
  • настраивать инкрементальную загрузку для SQL-запросов имеет смысл только если время выкачки данных из БД существенно больше, чем время выполнения SQL-запроса;

  • для стратегии Запрос к логу изменений - если SQL делает запрос только из одной таблицы, например, запрос к одной таблице с отбором только нужных полей, то инкременты отработают. Если SQL соединяет две таблицы - не будет логов изменений и будут тянуться все данные;

  • инкрементальная загрузка игнорируется для фрагментов, источником данных которых является Файл. Независимо от настройки будет выполняться полная выгрузка данных;

  • для источника данных и Odata поддерживается инкрементальная загрузка данных с типом стратегии Стандартная.

img

Интерфейс настройки фрагмента содержит:

  • кнопки управления:

    • img Сохранить - при нажатии на кнопку сохраняются настройки;  

    • img Отменить - закрытие окна без сохранения настроек;

    • img Сделать инкрементальным - позволяет сменить тип фрагмента на Инкрементальный. При сохранении по умолчанию фрагмент принимает тип Абсолютный. Кнопка доступна после сохранения. Смена типа происходит сразу и на карточке фрагмента появляется метка img Инкрементальный. Вернуть тип Абсолютный можно по кнопке Отменить инкрементальность.

    При клонировании модели копируются все фрагменты и их настройки, за исключением типа фрагмента Инкрементальный.

    Объединение в модели разных типов фрагментов
    • Абсолютные фрагменты, загружаются и обновляются полностью;
    • Инкрементальные фрагменты загружаются в зависимости от типа стратегии;
    • Объединение данных происходит с полным набором данных в Sparkе, как инкрементальных, так и абсолютных фрагментов.
  • фрагмент:

    • номер фрагмента;
    • блок данных - отображается цвет и наименование, что и на схеме связей;
  • Стратегия - выбор типа стратегии:

    • Стандартная - доступны следующие настройки:
    Алгоритм загрузки

    Первая загрузка: попадают все данные источника кроме данных, подходящих под условие флага удаления. Также отрабатывает запрос на получение максимального значения поля с ключом инкрементальности для последующих запросов на получение инкремента. Если не была включена инкрементальность, происходит полная загрузка, которая не считывает удаленные записи и записывает их в ClickHouse.

    При включенной инкрементальности во время загрузки загружается вся таблица. Записи, попадающие под условия флага удаления, не попадут в хранилище. При дальнейших загрузках, если в текущем инкременте будут появляться записи с флагом удаления, эти данные будут удалены из ранее загруженного набора данных.

    Последующая загрузка:

    1.система посылает запрос источнику, используя настроенные атрибуты инкрементального фрагмента (инкрементальный ключ, первичный ключ, флаг удалённой записи);

    2.из источника загружается текущий инкремент по объекту фрагмента - все записи источника, у которых значение ключа инкрементальности больше или равно максимальному значению ключа из шага 1, исключая данные, подходящие под условие флага удаления. 

    3.система поднимает все ранее загруженные инкременты по этому фрагменту;

    4.из доступных файлов, ранее загруженных и полученных при текущем запросе формируется единый Apache Parquet по этому фрагменту, который будет обладать полным набором данных. Получается полная таблица с данными фрагмента;

    5.полный набор данных по фрагменту передается в Spark, который выполняет все дальнейшие операции. 

    • Инкрементальный ключ - выбор поля текущего фрагмента, по которому Система идентифицирует что нужно загрузить. Из источника в очередной сеанс синхронизации модели будут загружены все записи, значение IKEY которых будет больше максимального из ранее загруженного в Систему;

    • Первичный ключ - выбор поля текущего фрагмента, по которому Система идентифицирует некоторые поступившие в очередной итерации строки полученными, но впоследствии измененными в источнике строками;

    • Флаг удаления записи - выбора поля текущего фрагмента, по которому Система понимает, что некоторые приехавшие в очередной итерации строки являются ранее полученными, но впоследствии удаленными в источнике строками. Выпадающий список с операторами условий позволяет задать условие сравнения, а поле ввода - значение для сравнения;

    При смене флага удаления в источнике, значение инкрементального ключа в таблице тоже должно меняться.

    • Запрос к логу изменений - доступны следующие настройки:
    Алгоритм загрузки

    1.система посылает запрос источнику, используя функцию для получения логов по инкрементальному фрагменту;

    2.источник возвращает идентификаторы записей, которые были изменены за запрашиваемый диапазон времени;

    3.из источника берется текущий инкремент по объекту фрагмента;

    4.система поднимает все ранее загруженные инкременты по этому фрагменту;

    5.из доступных файлов, ранее загруженных и полученных при текущем запросе формируется единый Apache Parquet по этому фрагменту, который будет обладать полным набором данных. Получается полная таблица с данными фрагмента;

    6.полный набор данных по фрагменту передается в Spark, который выполняет все дальнейшие операции.

    img

    • SQL - SQL-запрос для обращения к таблице логов. Для получения логов по таблицам в SQL-запросе укажите следующие параметры:

      SELECT 
            row_id as pkey, 
            action as action, 
            ts_log::text as ikey
      FROM analytics.f4bi_get_logs (
                                    'pers', 
                                    'person', 
                                    '{{last_ikey|default('1900-01-01T00:00:00+00')}}'::timestamp, 
                                    '9999-12-31T23:59:59+00'::timestamp
                                    )
      
      • analytics.f4bi_get_logs - наименование функции;
      • row_id as pkey - выходные параметры: ID записи, которая была изменена;
      • action as action - выходные параметры: тип действия над записью;
      • ts_log - выходные параметры: дата и время изменения записи;
      • pers - входные параметры: схема таблицы бд;
      • person - входные параметры: таблица бд;
      • 1900-01-01T00:00:00+00 - входные параметры: дата и время начала периода;
      • 9999-12-31T23:59:59+00 - входные параметры: дата и время окончания периода

    В поле ввода SQL-запроса при вводе первых букв отображаются значения справочников (IntelliSense) и подсветка синтаксиса. Справочники реализованы по полям модели, ключевым словам (select, from и др.), алиасам, таблицам. При выборе алиаса в выпадающем списке в формуле указывается код выбранного поля для корректной работы запроса. При выборе листов или таблиц файловых источников в выпадающем списке в запросе прописывается его название в обратных кавычках для корректной работы запроса.

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