Обсудить
бизнес-задачи

Разработка ETL-процесса в Alpha BI

блог о bi, №1 в рунете
Однако российский рынок аналитических систем демонстрирует активный рост — всё больше компаний рассматривают переход на отечественные BI-платформы. В ходе исследования была детально изучена платформа Alpha BI. Этот инструмент объединяет возможности создания OLAP-кубов, генерации интерактивной отчетности и множество других функций для работы с данными. В данной статье основное внимание уделено методике миграции информационных массивов в экосистему Alpha BI посредством ETL-процессов.

Прямое использование данных источника без ETL доступно для ограниченного набора DWH (PostgreSQL, Oracle, ClickHouse).В связи с этим, перенос данных посредством ETL-процессов является приоритетным способом формирования источника данных для последующих работ в системе Alpha BI. Рассмотрим пример создания ETL-процесса загрузки справочника регионов. В качестве основного подключения в примере используется подключение к MS SQL Server с наименованием «TO1».

Для начала необходимо создать подключение к источнику. Для этого:
  1. Перейдите в раздел «Система»
  2. Выберите пункт «Администрирование»
  3. Выберите подпункт «Соединения»
  4. Нажмите кнопку «Создать»

В появившемся окне необходимо заполнить данные подключения к вашей БД.
В поле «Наименование» необходимо указать то наименование, под которым будет отображаться соединение в AlphaBI. Остальные данные аналогичны обычным данным подключения к вашему DWH.

После создания подключения, перейдем к созданию ETL-процессов. Для этого:
  1. Выберите пункт «ETL»
  2. Нажмите «Создать» -> «Процесс ETL»

Необходимо задать процессу код (идентификатор процесса) и наименование, а затем нажать «Сохранить изменения».
Разработанный ETL-процесс представляет собой алгоритм действий в виде блок-схемы.
Добавим первый элемент, который будет считывать данные из источника.
Для этого нажмите «Добавить» -> «Входные данные» -> «SQL запрос к базе данных».

После этого автоматически откроется панель свойств созданного элемента.
Наименование (1) можно оставить стандартным. (В случае, если вы планируете извлекать данные из нескольких источников/таблиц внутри одно ETL, то рекомендуется называть блоки так, чтобы название давало понимание того, что происходит в блоке).

В соединении (2) по умолчанию выбрано «Rdbms». Это соединение ко внутреннему Postgre Alpha-BI. Для всех элементов, кроме запросов к источникам, необходимо оставлять именно это соединение. В данном случае выберите ранее созданное вами соединение.

(Максимальное время выполнения запроса можно оставить по умолчанию, структуру данных мы автоматически определим из запроса).

Перейдем к полю «Запрос» (3). В него необходимо добавить код SELECT-запроса SQL. Код необходимо писать так, как если бы вы делали запрос в своем источнике. Проверить правильность ожидаемого результата можно с помощью кнопки «Предпросмотр» (4), после чего необходимо нажать «Автозаполнение полей». В результате структура данных обновится в соответствии с запросом.

Для корректной загрузки данных в целевую сущность (в Alpha-BI это бизнес-объекты), необходимо добавить элемент обработки данных. Добавим элемент «Калькулятор». (Обработка необходима, если есть потребность в дополнительном обслуживании и обработке данных. В примере данные обработаны на стороне DWH)
Теперь необходимо связать два элемента. Для этого необходимо зажать указатель мыши на точке снизу элемента извлечения и протянуть его к точке сверху элемента обработки.
Далее, в свойствах элемента «Калькулятор» нажмите «Заполнить поля» и сохраните ETL-процесс.
После этого синхронизируйте схему.
Рекомендуем синхронизировать схему после каждого создания/обновления/удаления всех видов сущностей и объектов.

Перейдем к созданию бизнес-объекта под справочник. Для этого:
  1. Выберите пункт «Типы бизнес-объектов»
  2. Нажмите на «Каталог»
  3. Нажмите кнопку «Создать» -> «Группа»

Этот пункт опционален, но рекомендуем создать хотя бы минимальную структуру хранения бизнес-объектов.
Нажмите на созданную директорию и создайте тип бизнес-объекта по аналогии с группой. Автоматически откроется окно свойств типа бизнес-объекта. Задайте код типа объекта и наименование. Код будет присвоен экземпляру типа объекта, поэтому можно задать код, описывающий смысл сущности (например, dim_Regions).

ВАЖНО: Код, в отличии от наименования, нельзя изменить после первого сохранения.

Флаг «Показывать в меню "Реестры"» можно не изменять, его можно переключить при необходимости уже после создания типа бизнес-объектов.

Бизнес-объект только что сохраненного типа создается автоматически. Зайдите в режим редактирования объекта.
Поля объекта можно создать вручную, исходя из необходимой структуры, однако в нашем случае есть удобный инструмент для автоматизации данного процесса.
Нажмите на директорию «Поля» (1), элемент «Волшебная палочка» (2) станет активным. Нажмите на него, а потом выберите «Из полей блока ETL-процесса» (3).
В появившемся окне нажмите на троеточие и выберите созданный ранее ETL-процесс. В результате у вас отобразятся поля, которые извлекаются из DWH с помощью ETL-процесса. (Возможно появление внутреннего поля entityId. Если в вашем справочнике уже есть уникальное поле для идентификации, то необходимости в нем нет). Нажмите применить и сохраните изменения в бизнес-объекте.
Далее необходимо выделить созданный тип бизнес-объекта и нажать «Опубликовать», после чего синхронизировать схему.
Вернемся к разработанному ранее ETL-процессу. Необходимо добавить в него еще один элемент: запись в бизнес-объект данных. Для этого нажмите «Добавить» -> «Запись» -> «Создание бизнес-объектов».

Создайте связь между объектами «Калькулятор» и «Создание бизнес-объектов» по аналогии со связью, созданной ранее.
Зайдите в свойства блока «Создание бизнес-объектов». Интерфейс во многом дублирует пункты из предыдущих разделов. Необходимо задать тип бизнес-объекта, нажав на троеточие и выбрав ранее созданный тип бизнес-объекта. Далее нажмите «Автозаполнение структуры данных».

Если данных в источнике слишком много, выберите пункт «Пакетная вставка», после чего определите количество строк в пакете.

Если данные необходимо всегда полностью обновлять, то нажмите «Очищать реестр перед загрузкой».

ВАЖНО: если данный пункт не выбран, данные будут добавляться в целевой бизнес-объект после каждого запуска ETL.

Сохраните изменения ETL-процесса. Теперь можно загрузить данные в ручном режиме. Для этого нажмите «Запустить».

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