О чём эта история
Компания Data Stories занимается проектами в сфере MarTech, аналитики данных и цифровой трансформации маркетинга.
Ориентируясь на запросы клиентов, в Data Stories разработали пайплайн для переноса аналитических систем с других платформ и их развёртывания в Yandex Cloud на базе сервисов платформы данных Object Storage, Yandex Data Processing и Yandex Managed Service for ClickHouse® с визуализацией данных в Yandex DataLens.
Задача компании
Data Stories — компания-разработчик стратегических решений, помогающий развивать цифровое будущее партнёров по бизнесу. Data Stories занимается разработкой, интеграцией AdTech-решений и консалтингом по цифровой зрелости. Для этого компания создаёт различные продукты, в том числе в области аналитики данных, например, data-driven-модели атрибуции, предиктивные модели LTV, кластеризация пользователей. Среди клиентов Data Stories крупные компании, такие как Почта России, Hoff, Росбанк, Ингосстрах.
Без аналитики невозможно управлять эффективностью интернет-маркетинга, поэтому один из важных запросов клиентов Data Stories — создание аналитических систем в облачной инфраструктуре. Data Stories — партнёр Yandex Cloud. Один из построенных пайплайнов для развёртывания новых аналитических систем или миграции уже существующих компания реализовала в Yandex Cloud.
Data Stories изначально рассматривала создание именно облачных систем. Важным требованием было наличие у облачного провайдера набора сервисов для различных аналитических сценариев. Также важным было полное соблюдение требований российского законодательства в области хранения персональных данных, а большим преимуществом — нативная интеграция с AppMetrica и Яндекс Метрикой. Для всех этих целей лучше всего подходила облачная платформа Yandex Cloud. Одной из задач была выгрузка, анализ и визуализация данных Яндекс Метрики. Для её решения компания выбрала набор сервисов платформы данных:
- Object Storage — полностью S3-совместимое хранилище файлов.
- Yandex Data Processing хорошо подходит для ETL-процессов в облаке.
- Yandex Managed Service for ClickHouse® — колоночная СУБД, хорошо подходящая для хранения витрин и интегрирующаяся с Yandex DataLens.
- Yandex DataLens — бесплатный сервис визуализации данных, который позволяет создавать дашборды любой сложности.
Аналитическая система с хранилищем и визуализацией данных
Основной особенностью проекта было то, что Data Stories планировали анализировать всю имеющуюся выгрузку из Яндекс Метрики, а не только отдельные параметры.
Созданный компанией пайплайн состоит из четырёх основных этапов.
Этап I
Сначала нужно загрузить данные счётчиков из Яндекс Метрики в бакет Object Storage. Из бакета легко получать данные для дальнейшей обработки, а также это недорогой способ хранения.
Основная сложность на этом этапе — большой объём данных Метрики у крупных клиентов. Для получения данных компания использует Logs API, который позволяет получать данные из Яндекс Метрики в виде единого отчёта, разделённого на множество партиций. После запроса к Logs API Data Stories с помощью скрипта проверяют статус отчёта и количество партиций в нём.
API_HOST = 'https://api-metrika.yandex.ru'
header = {'Authorization': f'OAuth {TOKEN}',
'Content-Type': 'application/x-yametrika+json',
'Accept-Encoding': 'gzip'}
url = f'{API_HOST}/management/v1/counter/{COUNTER_ID}/logrequest/{request_id}'
r = requests.get(url, headers=header)
if json.loads(r.text)['log_request']['status'] == 'processed':
parts = json.loads(r.text)['log_request']['parts']
Когда отчёт готов, скрипт запускает последовательное скачивание всех партиций, архивирует их по одной и сохраняет в бакет Object Storage.
for part_num in parts_numbers:
url = f'{API_HOST}/management/v1/counter/{COUNTER_ID}/logrequest/{request_id}/part/{part_num}/download'
r = requests.get(url, headers=header_dict)
if r.status_code == 200:
tmp_df = pd.read_csv(StringIO(r.text), sep = ' ', dtype = object)
bytes_csv = BytesIO()
with gzip.GzipFile(mode='w', fileobj=bytes_csv) as gz_file:
tmp_df.to_csv(TextIOWrapper(gz_file, 'utf8'), index=False)
bytes_csv.seek(0)
s3.upload_fileobj(
Fileobj=bytes_csv,
Bucket=bucket,
Key=f'{DATE}/{PART}.csv.gz',
ExtraArgs={
'ContentType' : 'text/csv',
'ContentEncoding' : 'gzip'})
Этап II
Далее Data Stories предварительно обрабатывают сырые данные. Для этого архивы извлекаются из бакета Object Storage и файлы обрабатываются в Yandex Data Processing с помощью задания PySpark (пример такой обработки есть в документации Yandex Cloud). Кластерами Yandex Data Processing легко управлять, например их можно создавать под конкретные задачи и удалять, когда они больше не нужны. Это позволяет решению Data Stories соблюдать баланс производительности и затрат на вычислительные ресурсы.
В результате обработки из каждого исходного csv-файла формируется более компактный и удобный для дальнейшей работы Parquet-файл. Все полученные файлы записываются в отдельные бакеты Object Storage как промежуточный результат работы.
Этап III
Data Stories продолжают обработку данных в Yandex Data Processing, формируя отдельные Parquet-файлы для каждой из витрин данных. Полученные файлы сохраняются в бакеты Object Storage и сразу же загружаются в базу Yandex Managed Service for ClickHouse®, как уже готовый источник данных для визуализации.
Этап IV
На последнем этапе обработанные данные визуализируют с помощью Yandex DataLens. Так как Data Stories выгружают из Метрики все доступные поля по параметрам Метрики, то визуализация может быть любой и зависит от запросов конкретного клиента. DataLens позволяет создавать дашборды любой сложности и имеет встроенную интеграцию с ClickHouse®, что позволяет не тратить лишние усилия на интеграцию сторонних продуктов и не перемещать данные за пределы вычислительного контура, созданного в Yandex Cloud.
Чаще всего запросы клиентов включают визуализацию динамики просмотров с различных устройств, целевых визитов, просмотров по различным каналам, конверсии из просмотров, посетителей и визитов.
Результаты
Data Stories разработала универсальный пайплайн по созданию полностью облачной системы аналитики. Компания уже использует его для визуализации данных Яндекс Метрики в своих проектах, но этот пайплайн можно использовать и для визуализации другой информации, например данных рекламных кабинетов, мобильных трекеров или данных postview-аналитики.
Мнение
К партнёрству с Yandex Cloud мы шли осознанно, это не только сертификация, но и постоянное взаимодействие между нами. Сервис обеспечивает безопасность и надёжность данных, что было для нас важным фактором при выборе платформы. Хочется отметить экономическую эффективность работы с Yandex Cloud для бизнеса. Гибкая система ценообразования позволяет оптимизировать затраты в процессе реализации и платить только за используемые ресурсы. Мы очень рады стать первыми партнёрами платформы данных Yandex Cloud по маркетинговой аналитике, так как наша задача реализовать лучшие и инновационные решения для наших клиентов, и такое партнёрство позволяет нам это делать.