Analytic Workspace: наш путь к self-service ETL

Новый подход к построению ETL-процессов в AW BI основан на создании особых программных ETL-блоков, или «блоков-декораторов». Такие блоки представляют собой управляющие скрипты, каждый из которых производит определенную операцию с данными таблицы. Библиотека декораторов доступна «из коробки», и пользователь может самостоятельно привести свои данные к необходимому виду без дополнительного программирования. Что такое ETL-блоки, как устроены, какие задачи можно решать с их помощью — в этой статье.

Статья написана по материалам доклада ведущего архитектора BI-системы Analytic Workspace, кандидата математических наук Александра Кварацхелии на экспертном мероприятии «BI-MeetUp» 5 октября 2023 года в Москве. Запись трансляции: https://youtu.be/AJAt1dJ48M8

Александр Кварацхелия на экспертном мероприятии «BI-MeetUp» 5 октября 2023 года
Александр Кварацхелия на экспертном мероприятии «BI-MeetUp» 5 октября 2023 года

Задачи ETL в BI-системе

Модуль ETL в BI-системе, как известно, призван решать задачи подготовки данных — их очистки, обогащения, транформации и приведения к виду, пригодному для дальнейшей визуализации. В AW BI результатом работы ETL-модуля является базовая аналитическая таблица (Analytic Base Table, ABT), иначе называемая витриной данных. ABT затем используется для визуализации, машинного обучения или считывается другими сервисами (Рисунок 1).

Рисунок 1. Основной процесс обработки данных в AW BI.
Рисунок 1. Основной процесс обработки данных в AW BI.

Логическая модель данных

Для эффективной работы ETL в единой связке с визуализацией в AW BI используется так называемая логическая модель данных. Это структура, которая осуществляет доставку метаданных в аналитическую таблицу и выполняет одновременно две функции:

  • Дает информацию о правилах соединения данных из различных источников;
  • Дает подсказки для блока визуализации о типах полей в итоговой ABT.

Принцип работы логической модели данных

Базовый принцип работы логической модели данных наглядно представлен на рисунках 2 и 3. Так, схема модели на рисунке 2 показывает, что таблица, полученная при соединении таблиц «План» и «Факт», должна быть пополнена столбцами справочников «Номенклатура» и «Организация», а также двумя предварительно вычисленными столбцами «Громов. Партнеры» и «Громов. Подразделения».

Рисунок 2. Схема логической модели на основе нескольких таблиц с объединением столбцов (JOIN)
Рисунок 2. Схема логической модели на основе нескольких таблиц с объединением столбцов (JOIN)

Схема модели на рисунке 3 показывает, что таблица финансовых показателей должна быть дополнена снизу строками показателей продаж.

Рисунок 3. Схема логической модели на основе нескольких таблиц с объединением строк (UNION).
Рисунок 3. Схема логической модели на основе нескольких таблиц с объединением строк (UNION).

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

Логическая модель указывает как на сами используемые данные, так и необходимые действия над ними для получения аналитической таблицы.

Что такое ETL-блоки?

Базовым элементом работы ETL-модуля в AW BI являются так называемые ETL-блоки или автоматические «блоки-декораторы». ETL-блок — это структура, состоящая из двух частей:

  • Метаданные блока (хранятся в файле. json) :
  • Заголовок блока: название, версия, автор; Описание параметров: что должен указать пользователь при размещении блока в модели.
  • Программный код блока (хранятся в файле. py, используется язык Restricted Python с возможностью обращения только в разрешенные блоки системы)
  • block_schema — определяет модификации схем вложенных в блок объектов. Block-schema получает на входе схемы всех низлежащих объектов и возвращает схему, которая получится на выходе из блока; block_data — задает правила, по которым итоговая таблица создается из входящих таблиц.

В структуру ETL-блока может также входить некоторое количество необязательных элементов, как например read. me или другая поясняющая информация. Кроме того, в ETL-блок могут быть включены справочники, прогностические модели машинного обучения.

ETL-блоки — это автоматизированные управляющие скрипты, каждый из которых производит определенную операцию с данными таблицы

Как работают ETL-блоки?

SQL-блок

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

Таким образом пользователю предоставляется возможность самостоятельно заложить необходимую трансформацию данных в модель уже на этапе ее формирования.

Так, на рисунке 4 вы видите схему части логической модели данных в AW BI. Здесь два вычисляемых поля, каждое из которых дообогащает итоговую АВТ определенными столбцами, рассчитываются независимо друг от друга и затем обрабатываются объединяющим SQL-блоком. Таким образом задается декларативное описание этой части модели, из которой явным образом следует последовательность вычислений.

Рисунок 4. Схема части логической модели с SQL-блоком
Рисунок 4. Схема части логической модели с SQL-блоком

ETL-блок «Unpivot»

Часто бывает ситуация, когда необходимо полностью или частично поменять местами столбцы и строки в таблице, либо повторить значения столбцов в строках — эта операция называется «Unpivot». Так, например, на рисунке 5 в исходной таблице нужно информацию о месяце в формате даты и сумме продаж в этом месяце разместить в строках для получения вида целевой таблицы.

Рисунок 5. Задача для ETL-блока «Unpivot».
Рисунок 5. Задача для ETL-блока «Unpivot».

С подобной задачей справляется ETL-блок «Unpivot», который имеет всего два задаваемых параметра:

  • Название столбца, в который будет вставлена дата;
  • Название столбца, в который будет вставлена сумма.

В остальном «Unpivot» действует автоматически: он перебирает схему вложенного объекта, находит значения, которые могут быть преобразованы в дату и записывает их строку «Месяц» и в следующую строку числом записывает соответствующую сумму продаж.

На рисунке 6 показано, как блок-декоратор «Unpivot» приводит таблицу к удобному для анализа виду.

Рисунок 6. Результат работы ETL-блока «Unpivot»
Рисунок 6. Результат работы ETL-блока «Unpivot»

ETL-блок «Parent-Child»

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

Рисунок 7. Задача для ETL-блока «Parent-Child»
Рисунок 7. Задача для ETL-блока «Parent-Child»

В ETL-блоке «Parent-Child» задаются параметры, которые указывают, какие столбцы являются атрибутами иерархии и соответствующий уровень иерархии.

На рисунке 8 показано, как блок-декоратор «Parent-Child» производит разворот иерархии загруженной таблицы, в результате чего данные предстают в пригодном для визуализации виде.

Рисунок 8. Результат работы ETL-блока «Parent-Child»
Рисунок 8. Результат работы ETL-блока «Parent-Child»

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

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

Преимущества и недостатки ETL-блоков

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

  • Сохранение декларативности при создании моделей. ETL-блок простым и естественным образом встраивается в логическую модель при ее формировании, при этом механика внутри блока может быть весьма серьезной и кодировать сразу целый комплекс операций с данными;
  • Легкая доставка блоков в конкретный экземпляр приложения. Поскольку ETL-блок представляет собой всего лишь комбинацию из двух файлов (Json и Python), то для их загрузки в приложение не нужно устанавливать специальные обновления либо совершать иные сложные действия;
  • Фрактальность (самоподобие). Из небольшого количества простых ETL-блоков можно конструировать большие логические модели с неограниченным количеством уровней вложенности для решения самых сложных аналитических задач.
  • Естественное погружение пользователей в работу с блоками. Это преимущество вытекает из предыдущего. Научившись работать ETL-блоками на простых моделях, пользователь естественным образом сможет использовать эту функциональность на больших и сложных моделях, что приближает нас к настоящему self-service ETL.

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

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

Какие ETL-блоки доступны в AW BI сегодня планы развития

Сейчас в AW BI ведется активная работа по пополнению пакета встроенных ETL-блоков, и на конец 2023 года доступны следующие:

  • SQL-блок;
  • Вычисляемые поля;
  • Генерация временной серии — позволяет сгенерировать столбец дат;
  • Unpivot;
  • Parent-Child иерархия;
  • Обработка JSON значений — разворачивание значений их вложенных JSON объектов/массивов в строки или столбцы аналитической таблицы;
  • Прогнозирование временного ряда — использование статистических методов предиктивной аналитики для предсказания «будущих» значений во временном ряду;
  • Модель машинного обучения (ML) — использование методов машинного обучения для классификации/регрессии значений в строках (например, поиск аномальных значений, заполнение пропущенных значений и т. п.) ;
  • Функция — позволяет проверить качество данных, убрать дубликаты или выполнить другую техническую операцию, не меняя вида исходной таблицы.

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

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

Сайт Analytic Workspace:

44
Начать дискуссию