Сегодня Операционная аналитика и практики reverse ETL - не столько дань моде, сколько насущная потребность многих компаний. Создать идеальное Хранилище мало, ведь данные создают ценность только тогда, когда вы способны их использовать.
В этой публикации я резюмирую свой опыт выбора решения класса reverse ETL:
Место reverse ETL в схеме потоков данных
Потребность в решении задач операционной аналитики
Различные способы организации reverse ETL
Кейс: Census для синхронизации данных в Pipedrive CRM
Место reverse ETL в схеме потоков данных
Прежде чем приступить к погружению и рассмотрению конкретных инструментов и способов решения проблемы, я предлагаю разобраться в том, какую задачу мы будем решать. Рассмотрим схему потоков данных и этапов работы с ними:
Интеграция данных (Extract - Load)
Моделирование, трансформация (Transform)
Бизнес-аналитика (BI / Business Intelligence)
Активация данных (reverse ETL)
Если пункты 1-3 привычны, ожидаемы и знакомы почти всем, то пункт 4 в схеме - что-то новое.
Активация или Операционализация данных - использование обогащенных и достоверных массивов данных (накопленных в Аналитических Хранилищах) в операционных системах. Именно об этих практиках пойдет речь в данной публикации.
Исходя из схемы, более-менее ясным становится происхождение названия этой области работы с данными – reverse ETL, ведь теперь данные из DWH идут в сторону Операционных систем и сервисов, будто замыкая цикл.
Потребность в решении задач операционной аналитики
Важным шагом будет привести несколько основных сценариев использования практик Reverse ETL. Как правило, всё сводится к тому, чтобы люди, непосредственно взаимодействующие с клиентами компании, имели максимально релевантный контекст и могли бы выстраивать свою деятельность самым эффективным образом.
Команды Customer Success
Преподнести ценность и набор features продукта в нужное время для клиентов,
Корректная приоритизация заявок и клиентских обращений,
БОльшие возможности самообслуживания в плане данных, меньшая зависимость от команд Data Analysts,
Сокращение времени ответа на распространенные вопросы поддержки.
Команды Sales
Автоматический скоринг лидов и заявок по заданным параметрам и характеристикам,
Точное понимание того, какие функции больше всего понравились клиентам,
Прогнозирование продаж в режиме реального времени,
Представление о взаимосвязях контактов и организаций, в которых они работают.
Команды Marketing
Использование разнообразных измерений и метрик для сегментации и персонализации предложений,
Повышение эффективности экспериментов с таргетингом рекламы и оценкой предпочтений пользователей,
Избавление от необходимости в ручных операциях (загрузка адресов электронной почты и прочее),
Получение актуальных данных непосредственно в CRM-системе.
Резюмируя, данные создают ценность только тогда, когда вы способны их использовать.
Для полноты картины нелишним будет взглянуть на список интеграций одного из решений класса reverse ETL - Hightouch
В списке есть сервисы самых разнообразных назначений:
Advertising
CRM
Customer Success
E-Commerce
Email
Live chat & Helpdesk
Payments
SMS & Push
Sales
И многие другие
Существуют различные способы организации reverse ETL
Разработка и поддержка собственных интеграций
Как всегда, любую интеграцию можно сделать собственными силами и множеством различных способов. Вопрос лишь в том, насколько трудоемок будет процесс разработки и поддержки готового решения. Если ваша команда обладает достаточными компетенциями и может себе это позволить, то почему бы и нет?
Однако в таком случае следует иметь в виду, что на плечи разработчика ложатся следующие задачи:
Обеспечение инфраструктуры (VM, Docker, Lambda),
Код логики потоков данных (Python, Java, SQL),
Оркестрация операций и data syncs (Airflow, Dagster),
Оптимизация потоков данных: incremental syncs, data diffs,
Работа с особенностями API сервисов: data schema, rate limits, maximum entries,
Обработка ошибок, поддержка retries, мониторинг и уведомления.
И вот уже эта задача не выглядит очень простой.
Автоматизация с помощью инструментов Point-to-Point
Инструменты Point-to-Point или технологии iPaaS (integration platform as a service), такие как Zapier, Tray и Workato, могут быть привлекательным вариантом для решения сценариев использования Reverse ETL, поскольку они позволяют отправлять данные с одной платформы на другую без единой строчки кода. Однако они создают сеть сложных цепочек, которые тяжело масштабируются.
Все инструменты iPaaS работают примерно одинаково – они выполняют действия на основе заданного триггера. Вы создаете собственные workflows для каждой интеграции в вашем стеке данных, и уже при наличи 3-4 систем это схема выглядит как что-то, что будет очень тяжело и неприятно поддерживать и развивать.
Использование специализированных сервисов класса reverse ETL
Решения класса reverse ETL создают подход принципа центр - периферия (hub & spoke), в котором хранилище является вашим источником достоверной информации, устраняя сложную паутину связей и потоков между различными сервисами.
Сегодня на рынке можно выделить следующих игроков:
Использование инструментов класса reverse ETL несет несколько ключевых преимуществ:
Сокращение времени, которое Data Teams тратят на рутинную и утомительную часть работы по построению и поддержке пайплайнов данных,
Интеграция с инструментами Modern Data Stack – Cloud Data Warehouses, dbt, dbtCloud,
Использование понятного и надежного решения, выполняющего возложенные на него задачи,
Стимулирование принятия взвешенных решений, основанных на достоверных данных (Data Driven Culture),
Повышение эффективности работы команд, взаимодействующих с клиентами компании.
Использование Census для синхронизации данных в Pipedrive CRM
Продемонстрирую этапы развертывания решения reverse ETL на примере сервиса Census.
Задача: по мере обновления витрин в Хранилище Данных актуализировать карточки водителей (chauffeurs) в CRM системе с тем, чтобы команда Operations могла быстро и качественно взаимодействовать с новыми и действующими водителями.
Подключение к источнику и приемнику данных
В нашем случае источник - DWH Amazon Redshift, применик - Pipedrive CRM.
Создание dbt-моделей, используемых для интеграции данных
Это 2 витрины:
Deals - потенциальные водители (лиды), которым предстоит пройти аттестацию,
People - действующие водители.
Маппинг модели в Census
Доступны несколько способов создания модели (набора данных) в Census:
SQL-запрос,
Интеграция с dbt-проектом,
Интеграция с Looker (Looks).
После получения списка атрибутов из источника данных, их необходимо связать с атрибутами сервиса-приемника. Иными словами, провести маппинг (соответствие) колонок.
Поля в источнике и приемнике называются идентично, поэтому Census смог автоматически определить связи, и мне не пришлось щелкать эти соответствия руками, браво!
Создание Syncs и Segments
Хорошо, к этому моменту мы подключились к источнику и приемнику данных, создали необходимые для синхронизации выборки данных (модели), установили маппинг (соответствие) атрибутов.
Следующая задача - установить правила регулярной синхронизации данных.
Опции по стратегии обновления:
Update or Create
Update only
Append
Опции по расписанию обновления:
Запуски вручную (Manual),
Сron-выражение,
Continuous (непрервыно),
dbtCloud trigger (после завершения dbt jobs),
API call (программный вызов),
Sequence (связать в цепочку, например, после одной из других синхрноизаций Census).
Богатый выбор на любой сценарий использования.
Кроме того, синхронизировать можно определенные сегменты записей (подмножество). В моём случае - это карточки водетелей, разбитые по разным странам. У каждой страны есть локальная команда, которая работает со своим пулом лидов, поэтому у меня таких сегментов 3: RU, FR, UK.
Мониторинг и отчетность
После того как всё сконфигурировано, протестировано и установлено на расписание, важно внимательно следить за работой пайплайна, получать уведомления об ошибках и изменениях. Это легко делать в web-панели, либо настроив уведомления на почту или в Slack.
На что еще стоит обращать внимание
Вопросы безопасности потоков ваших данных
Безопасное подключение к сервисам,
Процессинг данных на стороне вашего Хранилища,
Audit & Compliance, проверки сервиса аудиторскими компаниями.
Developer Experience
Доступ к программному интерфейсу (API access),
Версионирование пайплайнов с помощью git (Syncs Version Control),
Расширенное логирование, Debug Mode для детальных проверок и поиска проблемных мест,
Автоматический маппинг полей без утомительного перетягивания полей мышкой (для меня это сыграло роль в выборе в пользу Census вместо Hightouch).
Прозрачное ценообразование сервиса
Для планирования трат и бюджета и оценки стоимости использования.
Этим особенностям и многим другим знаниям, связанным с современной и удобной организацией работы с данными я и мои коллеги учим на занятиях Analytics Engineer в OTUS.
Это не просто набор занятий по темам, а единая, связная история, в которой акцент делается на практические навыки, так необходимые компаниям-работодателям. На live-сессиях мы делимся своим опытом и реальными кейсами:
Организация Хранилища Данных,
Продвинутое моделирование в dbt,
Аналитические паттерны и SQL,
DataOps-практики: Оркестрация, CI-CD, Data Quality, reverse ETL,
Кейсы: Сквозная аналитика, Company's KPI, Timeseries analysis.
Также своими наблюдениями, опытом и практиками я делюсь в ТГ-канале Technology Enthusiast.
Напишите комментарий, если имеете опыт в организации reverse ETL потоков данных. Какую задачу решали, с помощью каких инструментов, чего удалось достичь, с какими трудностями столкнулись?
Спасибо!