История JaffleGaggle: Моделирование данных для обзора клиентов 360
Примечание редактора: В этом руководстве Донни рассказывает вымышленную историю SaaS-компании под названием JaffleGaggle, которой необходимо сгруппировать своих индивидуальных пользователей freemium в аккаунты компаний (так называемый обзор клиентов 360), чтобы стимулировать рост, основанный на продукте.
Вы можете следовать технике моделирования данных Донни для разрешения идентичности в этом репозитории проекта dbt. Он включает набор демонстрационных CSV-файлов, которые вы можете использовать как семена dbt, чтобы протестировать проект Донни самостоятельно.
Прежде чем мы начнем: небольшое примечание о Jaffles
Если вы были в сфере dbt, вы, вероятно, знаете легенду о магазине Jaffle. Если нет, я бы рекомендовал потратить минуту на ознакомление с README для оригинального демонстрационного проекта Jaffle Shop от Клэр Кэрролл (в противном случае это руководство может показаться немного странным, но все же полезным для чтения).
Кратко, jaffle это:
"Поджаренный сэндвич с запечатанными краями. Изобретен в Бонди в 1949 году, скромный jaffle является австралийской классикой. Запечатанные края позволяют любителям jaffle наслаждаться жидкими начинками внутри сэндвича, которые достигают температур, близких к ядру Земли, во время приготовления. Часто употребляется дома после ночной прогулки, самая классическая начинка — консервированные спагетти, а мой личный фаворит — оставшееся тушеное мясо с расплавленным сыром."
Смотрите выше: Вкусные, вкусные jaffles.
Jaffle Shop — это демонстрационный репозиторий, упомянутый в Руководстве по началу работы с dbt, и его jaffles занимают особое место в сердцах сообщества dbt, а также на Data Twitter™.
Поэтому я подумал, что будет уместно использовать коллективное уважение к этим вкусным, хрустящим закускам, чтобы поговорить об обзорах клиентов 360.
Что такое обзор клиентов 360?
Обзор клиентов 360 — это модный способ сказать, что у вас есть целостный набор данных, который позволяет понять поведение ваших клиентов. Это включает в себя возможность связать все различные виды данных, которые вы собираете о клиентах, через разрешение идентичности, о котором мы поговорим позже в этом руководстве.
Это может быть сложно, потому что люди меняют компании, создают новые аккаунты с разными адресами электронной почты, или одна и та же компания может иметь разные связанные рабочие пространства (в нашем случае — gaggles 🦢).
Все это говорит о том, что создание обзора клиентов 360 — это мощный способ получить понимание ваших клиентов и пользователей, но э то может сопровождаться трудностями (с которыми мы поможем вам справиться).
Познакомьтесь с JaffleGaggle, нашей вымышленной компанией
В нашем вымышленном мире данных для сегодняшнего примера, B2B-компания увидела, что людям действительно нравится одна вещь (например, jaffles) и нашла способ масштабировать эту любимую вещь в бизнес. Встречайте JaffleGaggle.
Продукт JaffleGaggle состоит из двух частей:
-
Лента рецептов jaffle, поддерживаемая функциональностью, которая позволяет заказывать все ингредиенты, необходимые для приготовления ночных jaffles дома.
-
Социальные группы для укрепления связей среди команд компании (ласково называемые Gaggle), где коллеги могут приглашать друг друга с помощью бесплатной электронной почты для виртуальных часов jaffle.
JaffleGaggle быстро растет и только что приобрела CRM (ура!), но он пока пуст (меньше ура 😟). К концу этого руководства вы и команда данных JaffleGaggle узнаете, как использовать dbt для моделирования данных аккаунтов, пользователей и событий из использования их приложения и агрегировать их в своем хранилище, чтобы загрузить в CRM для использования командой продаж.
По мере того, как люди приглашают больше своих коллег в свою Gaggle, они могут разблокировать еще больше рецептов и jaffles.
Видно выше: Один из многих, многих вкусных рецептов jaffle, которые ждут команды на JaffleGaggle.
Хорошо, теперь, когда мы заставили вас захотеть вкусных, вкусных jaffles, вот что это имеет общего с данными и ростом, основанным на продукте (так называемым PLG).
Как обзор клиентов 360 поддерживает рост, основанный на продукте
JaffleGaggle, как и многие стартапы, сосредоточена на подписании компаний на годовые контракты, чтобы они могли привлечь венчурное финансирование (по безумной оценке). Для этого они хотят развивать свои продажи, чтобы нацелиться на компании с активными gaggles.
JaffleGaggle должна отслеживать информацию о своих взаимодействиях с клиентами и бизнесами, к которым они принадлежат, включая данные, которые позволят команде продаж ответить на несколько ключевых вопросов:
- Как пользователь взаимодействовал с платформой?
- Сколько рабочих пространств связано с компанией?
- Кто из пользователей компании является активным и с кем следует связаться?
Все эти вопросы требуют агрегации и синхронизации данных из использования приложения, информации о рабочих пространствах и заказах в CRM, чтобы команда продаж имела их под рукой.
Этот процесс агрегации требует аналитического хранилища, так как все эти вещи нужно синхронизировать вместе вне базы данных приложения, чтобы включить другие источники данных (информация о биллинге/событиях, прошлые точки взаимодействия в CRM и т.д.). Таким образом, мы можем создать наш модный обзор клиентов 360 в JaffleGaggle, что является стандартным проектом для команды данных B2B-компании.
Погружение в мо делирование данных
В этом руководстве я проведу вас по пути JaffleGaggle к созданию обзора клиентов 360 с использованием dbt, чтобы они (и вы тоже) могли усилить свою стратегию PLG с помощью лучших данных (и распространить любовь к jaffles повсюду).
Структура данных разбивается следующим образом:
- 823 gaggles
- 5,781 пользователей (уникальных по электронной почте, могут быть связаны только с одним gaggle)
- 120,307 событий (‘recipe_viewed’, ‘recipe_favorited’ или ‘order_placed’)
Давайте начнем.
Внимание, строители! Если бы это был реальный поток событий, было бы гораздо лучше использовать инкрементальные модели на основе временной метки, но поскольку это проект-песочница, я этого не сделал.
Шаг 1: Определите наши сущности
Для freemium-продукта, такого как этот, где пользователи регистрируются только с помощью своего адреса электронно й почты, лучшей практикой является использование домена электронной почты для пользователей в качестве уникального идентификатора для аккаунтов. Может быть несколько gaggles, связанных с одним корпоративным доменом электронной почты, таким образом, принадлежащих одному аккаунту.
Ниже я разберу DAG на каждом этапе нашего процесса, чтобы вы могли увидеть, как все это строится вместе.
Для использования нашего CRM нам нужно загрузить данные для следующего:
- Контакты (контакты, уникальные по адресу электронной почты)
- Gaggles (понимание активности рабочего пространства)
- Аккаунты (компании, которые наша команда продаж может отслеживать и приоритизировать)
Шаг 2: Моделирование ко нтакта
Мы начнем с самого низкого уровня, который представляют собой контакты, с которыми команда продаж хочет связаться, и затем будем двигаться вверх к аккаунту. Для этого мы сосредоточимся на трех шагах:
-
Выполнение извлечения домена электронной почты из электронной почты
-
Пометка личных электронных писем
-
Создание столбца для корпоративных электронных писем
После выполнения этих шагов мы также рассмотрим шаг "человек в цикле", чтобы обеспечить целостность данных на этапе моделирования. Все это вместе поможет гарантировать, что при обращении к пользователю у команды продаж будет вся соответствующая информация о использовании продукта под рукой.
Шаг 2.1: Извлечение домена электронной почты из электронной почты
Для этого шага взгляните на фрагмент из models/staging/stg_users.sql
ниже. В нем мы выполняем извлечение домена электронной почты из электронной почты.
select
id as user_id,
name as user_name,
email,
{{ extract_email_domain('email') }} AS email_domain,
gaggle_id,
created_at
from source
Мы определили извлечение домена электронной почты как макрос под названием extract_email_domain
, который мы вызываем на строке 18 (которую вы можете найти в приведенном ниже фрагменте).
Этот макрос использует регулярное выражение для захвата текста справа от символа ‘@’ и гарантирует использование только параметра электронной почты в нижнем регистре перед извлечением домена. Это потому, что домены электронной почты не чувствительны к регистру, но SQL чувствителен (см. пользователей 2954 и 3140 в данных семян для примера).
{% macro extract_email_domain(email) %}
{# Это SQL для извлечения домена электронной почты в формате SQL Snowflake #}
regexp_substr(lower({{ email }}), '@(.*)', 1, 1, 'e',1)
{% endmacro %}
Внимание, строители! Обратите внимание, что мы не проверяли неправильно отформатированные электронные письма, такие как точки в конце домена или пробелы. Убедитесь, что вы проверили свой набор данных, чтобы увидеть, является ли это допустимым предположением.
В общем, было бы полезно использовать регулярное выражение для удаления и извлечения адреса электронной почты. Однако, поскольку это B2B-кейс, не все домены электронной почты созданы равными. Мы хотим убедиться, что помечаем личные электронные письма, чтобы они обрабатывались иначе, чем корпоративные электронные письма, к которым наша команда продаж будет обращаться (это делает продажи более продуктивными и гарантирует, что мы не будем обращаться к людям более одного раза).
Совет: Если вы впервые создаете определение, такое как "домены личных электронных писем", я настоятельно рекомендую заранее согласовать его с остальной частью бизнеса. Понимание воздействия и наличие общего понимания таких определений снижает трение и позволяет ва м управлять вашей командой данных как продуктовой командой, а не отвечать на разовые запросы на обслуживание.
Шаг 2.2: Пометка личных электронных писем
Далее мы можем пометить личные электронные письма с помощью models/jafflegaggle_contacts.sql
, который вызывает другой макрос в начале файла, чтобы подтянуть личные электронные письма, которые мы хотели бы исключить:
{% macro get_personal_emails() %}
{{ return(('gmail.com', 'outlook.com', 'yahoo.com', 'icloud.com', 'hotmail.com')) }}
{% endmacro %}
Одним из замечательных аспектов написания этого как макроса в dbt является то, что команда данных может легко повторно использовать этот файл в других местах в кодовой базе.
Это улучшает согласованность и гарантирует, что добавления или удаления в этом списке личных электронных писем актуальны.