Требования к ETL-сервисам – построение аналитических решений на базе myBI Connect
Привет от Technology Enthusiast! Сегодня речь пойдет о сервисах интеграции данных, их функциональных возможностях и ограничениях. Рассмотрение будем вести на примере сервиса myBI Connect, опираясь на который я реализовал с десяток аналитических проектов за последние несколько лет.
Отмечу, что с конца февраля ребята сделали значительные шаги в сторону развития отказоустойчивости и масштабируемости своего решения. Заглядывайте под кат, если стоите перед выбором коннектора или хотите выжимать максимум из доступного:
Требования и ожидаемые результаты.
Функциональные возможности.
Сценарии использования и бизнес-ценность.
Планы развития, продвинутое моделирование и BI.
Предъявите требования и ожидаемые результаты
Я обладаю довольно обширным опытом работы в сфере анализа данных и мне удалось познакомиться со множеством различных инструментов:
Начиная с самописных java-фреймворков, используемых в крупных корпорациях, и инструментов, которые изначально развивались в экосистеме Hadoop – Spark, NiFi, Kafka, StreamSets, и другие.
Я осуществлял выбор SaaS Extract - Load сервиса для Wheely и миграцию всех Data Pipelines: Fivetran vs Hevo vs Alooma (да, об этом я тоже планирую написать!).
В иных случаях приходилось создавать и поддерживать свои коннекторы. И здесь я стал приверженцем Datalake-like подход с оркестрируемой выгрузкой через API с использованием shell-скриптов и промежуточным сохранением слепков всех данных в S3-подобный storage.
Оценивал современные решения оркестрации пайплайнов: Airflow, Prefect, Dagster.
Пробовал Open Source коннекторы: Meltano, Airbyte (в интеграцию которого с Clickhouse даже контрибьютил).
Забавно, что в нескольких предложениях можно проследить эволюцию развития инструментов в области Data Engineering.
Так какие именно выводы я мог бы сделать о выборе качественного решения, способного взять на себя значительный пласт низкоуровневой работы по сбору и интеграции данных?
Возможность делегировать как можно больше простых и рутинных действий
Пожалуй, два основных типа задач, с которыми сервис должен справляться хорошо это Extract & Load:
Уметь прочитать данные из исходной системы (СУБД, Сервис, API, File, gSheet).
Записать эти данные в целевое Хранилище.
Истинная ценность для бизнеса создается в рамках трансформации исходных данных в осмысленные витрины / скоринги клиентов / готовые персональные предложения, и, конечно, их использования для принятия решений.
Чем меньше времени Вы тратите на выполнение задач предыдущих этапов, тем больше ресурсов и возможностей у Вас остается для создания реальной ценности и Data Insights.
Коннекторы без головной боли
По принципу Plug & Play – включил и работаешь.
Они есть, они работают, и их можно использовать прямо сейчас.
Быстрый старт – удобство и простота.
Уже готовая базовая выгрузка (+ схема БД) по щелчку пальцев.
Сервис закрывает потребности в интеграции данных на 90-100%.
Консистентность, актуальность, надежность данных
Вероятно, один из самых главных критериев - это корректность выгружаемых данных. Иначе говоря, смотря в выгрузки и отчеты в веб-панелях систем-источников мы хотели бы видеть одинаковые суммы трат.
Консистентность результатов регулярного обновления данных.
Сверки уже загруженных данных на предмет отклонений.
Гибкость в установке расписания выгрузок - чем чаще, тем ближе к real-time.
Удаление устаревших данных, которые не будут востребованы – garbage collection.
Нередки случаи когда источники данных, например, рекламные кабинеты, могут корректировать суммы трат постфактум (учет fraud, скликивание объявлений, корректировка ошибок). Такие изменения тоже следует уметь корректно учитывать в Хранилище.
Возможность кастомизации и адаптации к меняющимся требованиям
Бизнес-реалии, окружение, а соответственно требования и задачи постоянно меняются. Как правило, в сторону усложнения. Здорово, если инструмент позволяет гибко подстроиться под новые требования:
Кастомный набор атрибутов выгрузки – по сути, выгрузка пользовательского отчета.
Загрузка любых других источников данных через так называемые Webhooks.
Гибкость структуры, например, возможность загружать новые столбцы в gSheet без проблем.
Доступность курсов конвертации валют.
Динамическое формирование метрик с использованием Cube (Headless BI).
Локализация: поддержка региональных источников и систем
Учитывая тот факт, что большинство компаний в России используют локальные продукты и сервисы для продвижения и поддержки операционной деятельности, крайне желательно видеть их в списке доступных коннекторов.
Сервисы-источники, актуальные в РФ: Яндекс.Директ, amoCRM, Битрикс24, CoMagic, Яндекс.Метрика и другие.
Не менее важным будет наличие документации, примеров, поддержки на русском языке.
К сожалению, редко какой ELT-сервис поддерживает системы-источники, специфичные для русскоязычного сегмента интернета.
myBI Connect: подключения к системам-источникам данных
А теперь я предлагаю разобрать вышеперечисленные требования через призму сервиса myBI Connect.
Всего коннекторов около 25 и разделены они на несколько групп:
Рекламные кабинеты: Я.Директ, Я.Маркет, Google Ads, VK, myTarget.
CRM-системы: amoCRM, Bitrix24, retail CRM, yClients, Мегаплан.
Call Tracking: CoMagic, Callibri, Calltouch, CallKeeper, CallTracking.
Счетчики посещаемости сайта: Я.Метрика, Google Analytics.
Прочие источники: Google Sheets, Carrot quest, Курсы валют, Zendesk, Webhooks.
Любой из источников максимально просто подключается прямо из веб-панели. Как правило, это будет редирект с просьбой подтвердить получение токена или права на чтение для приложения myBI. В дополнение, к каждому источнику прилагается пошаговая инструкция по подключению с описанием параметров выгрузки.
Все коннекторы имеют готовую схему в СУБД, работают с актуальными версиями API, а некоторые имеют расширенные возможности выгрузки.
Схема представляет собой заранее продуманную снежинку (snowflake) в 3-й нормальной форме, состоящую из нескольких таблиц-фактов и ряда таблиц-измерений. Такая структура поможет гибко подойти к составлению отчетов:
Вглубь – гранулярность данных: от рекламных кампаний к объявлениям и ключевым словам.
Вширь – доступность различных измерений: география, посадочные страницы, тип устройства пользователя, ключевые слова.
К примеру, схема рекламного кабинета myTarget:
Персональная управляемая (Managed) СУБД в Облаке
По умолчанию данные будут литься в выделенную базу данных в Облаке. Создание, управление, наполнение этой базы выполняется автоматически и входит в тариф.
До недавнего времени приоритет отдавался Managed Azure SQL в Облаке Microsoft, однако уже сейчас доступен вариант с PostgreSQL в Яндекс.Облаке! Если у Вас имеются дополнительные требования или предпочтения, то может быть реализована возможность записи в Вашу целевую Базу Данных.
В веб-панели наглядно доступны простые метрики мониторинга Хранилища.
Автоматически будут созданы несколько пользователей для доступа к данным:
Владелец – с правами на чтение, запись, удаление.
Пользователь – с правами только на чтение.
Консистентность данных под контролем
Выгрузки из систем-источников могут быть запрограммированы на использованием look-back period (опция "Увеличить Интервал"), т.е. количество дней, за которые будут обновляться данные. Например, вариант «один день» прибавит к выгрузке за текущий день еще один (вчерашний). Таким образом, даже если, например, Google Ads внесет поправки в сумму трат задним числом, они будут применены на стороне Хранилища!
Помимо этого, в myBI Connect есть встроенные механизмы проверки загруженных данных. В основе работы данного функционала лежит коэффициент отклонения, который отражает «качество» соответствия данных. Он вычисляется путем сравнения выгрузок из сервиса-источника с набором, который ранее уже был загружен в СУБД. Сумма абсолютных значений данного коэффициента используется для определения необходимости запуска перезагрузки данных в хранилище.
Несколько слов стоит сказать о Garbage collection или удалении устаревших данных, которые не будут востребованы. Забудьте про скрипты DELETE с участием каскадно-зависимых таблиц! Достаточно просто ввести интервал и запустить задание из веб-панели.
Advanced: Пользовательские выгрузки
Для ряда источников предусмотрена возможность формирования собственных запросов на выгрузку с заданным набором параметров, измерений и метрик:
Яндекс.Директ
Яндекс.Метрика
Google Analytics
Это представляется очень удобным, так как базовая схема данных может подойти только для определенного набора сценариев аналитики. Как только Вы переступаете за их грань, появляется необходимость формирования собственных отчетов. myBI Connect дает возможность делать это даже без знания языков программирования и основ API-вызовов.
Advanced: Webhooks для любых интеграций
Несмотря на то, что myBI Connect имеет ограниченный набор готовых коннекторов, это не означает, что из других сервисов получить данные невозможно. На текущий момент у многих сервисов есть возможность передачи различных сведений при помощи так называемых webhooks. Это означает, что сервис, который «генерирует» данные, самостоятельно передает их далее при помощи HTTP-запроса. myBI Connect умеет принимать эти запросы и сохранять данные в базу для накопления и последующего использования как самих по себе, так и совместно с данными из других источников.
Приведу свой пример bash-скрипта для интеграции самописной CRM-системы:
echo "$(date '+%Y-%m-%d %T') START get data from XML endpoint with curl"
curl "https://www.inhouse-crm.ru/order-list.xml?date-from=01-01-2022&date-to=31-03-2022" -o export.xml
echo "$(date '+%Y-%m-%d %T') START parse XML to JSON events with xq + jq"
xq . export.xml | jq '[."order-list".date[] | .order[]]' > export_parsed.json
echo "$(date '+%Y-%m-%d %T') START post to myBI Connect Webhook endpoint with curl"
curl \
--header "Content-Type: application/json" \
--request POST \
--data @export_parsed.json \
https://app.mybi.ru/webhook/21386/twiecblhkovok/
Оркестрация джобов
В сервисе имеется функционал, который позволяет гибко настраивать время обновления данных. Чтобы воспользоваться этой возможностью, необходимо в разделе «Интервал» выбрать пункт «произвольный».
Задание произвольного старта обновления задается в формате cron.
Веб-панель + Документация + Пошаговые инструкции
Большинство приведенных выше скриншотов сняты как раз из рабочей панели myBI. Это лаконичный и понятный, в то же время простой и функциональный интерфейс, где всё на своих местах и быстро находится.
Нет обилия кнопок, лишних надписей, сверхсложных конфигураций. Из странички любого коннектора можно легко прыгнуть в соответствующий раздел документции.
О сопровождающей документации хочется сказать отдельно. Каждый коннектор снабжается:
Описанием базовой выгрузки и функционала.
Примером подключения и конфигурации (шаг за шагом).
Набором доступных расширенные возможностей.
FAQ или Вопросы и Ответы.
Если даже на данном этапе у Вас остаются сложности, доступен онлайн-чат с профессиональным инженером. И всё на понятном русском языке, никакого Indian English ?
Кейсы: какие решения строят компании?
Надежный и функциональный сервис интеграции данных это отлично. Но что дальше? Основная бизнес-ценность строится на последующих этапах, и здесь я хотел бы привести часто используемые сценарии, зачем и как клиенты пользуются сервисом myBI:
Управленческая отчетность: выручка, прибыль, расходы, налоги, оплата труда и их динамика во времени.
Консолидация маркетинговых и рекламных расходов (+ оффлайн каналы + трекинг звонков).
Контроль результатов работы подрядчиков и Digital-агентств.
Построение Сквозной Аналитики: все траты, вся пользовательская активность, все лиды-конверсии-сделки в единой информационной панели.
Продвинутая аналитика: сегментация, прогнозирование, Next Best Offer, рекомендательные панели, персональные коммуникации.
Я рассмотрю принципы построения некоторых из этих решений на реальных примерах в следующих сериях публикациий.
Открывая широкий горизонт возможностей
За годы сотрудничества с myBI, я наглядно вижу, какой большой и трудный путь проделали лидеры этого сервиса. Надежный, функциональный и удобный сервис с невероятно доступными тарифными планами. Впереди много интересных идей и интеграций, о которых я продолжу рассказывать:
Взаимодействие с экосистемой Я.Облака: Datalens (BI), Clickhouse (Analytics Database), Datasphere (ML + Advanced analytics).
Интеграция с dbt - мультифункциональным инструментом для моделирования Хранилища: готовые модули и витрины для myBI.
Работа в команде, Качество данных и Continuous Integration, git-версионирование проектов.
Миграция из PowerBI на комбо-связку myBI + Clickhouse + dbt + Datalens.
Кейс построения Сквозной Аналитики и рейтинг нетривиальных проблем и подводных камней.
Для тех, кто заинтересовался инженерной частью решения, и хотел бы научиться выстраивать Пайплайны и Хранилища Данных на современном стеке, создавая ценность для бизнеса, я порекомендовал бы курс DWH Analyst на платформе OTUS, автором которого являюсь.
На live-сессиях я и мои коллеги делимся своим опытом и реальными кейсами:
Продвинутое моделирование и Data Vault.
dbt + подготовка собственных модулей к нему.
Data Testing + Slim Continous Integration.
Materialized Views.
И многое другое.
Подписывайтесь, чтобы не пропускать публикации и новости. А также оставьте комментарий, какие функциональные возможности Вы используете для построения решений в своих компаниях? И чего Вам, возможно, не хватает на данном этапе?
Спасибо!