Зачем: учащемуся нужен понятный путь от наблюдений к выводу без готового ответа в задании. Что: уточнены сравнения в четырех расследованиях; готовые объяснения заменены вопросами к строкам, расчетам и сохраненным состояниям. Проверка: проверены 54 локальные ссылки и git diff --check; формулировки сверены с устройством источников и витрин.
7.0 KiB
Куда пропали покупки
Чему учит: обнаружить потерю событий при сверке двух источников и обосновать, каким данным можно доверять при подсчете покупок.
Факультатив доступен после ступени 1. В DBeaver подключитесь пользователем
analyst по инструкции.
Дождитесь завершения etl_pipeline; на время расследования оставьте
world_live на паузе и дождитесь уже начатых прогонов.
Выберите день
Магазин зарегистрировал заказы, но часть событий покупки не дошла до трекера. Найдите след этой потери сначала в событиях сайта, затем в заказах.
Возьмите день, для которого уже получен последний слепок семидневного окна. Запрос показывает самую позднюю подходящую дату:
SELECT max(snapshot_date) - 6 AS last_closed_day
FROM ods.order_v;
Используйте выбранный день во всех запросах. События отбирайте по
dds.event_v.event_date, заказы — по dds.order_v.order_date.
Сравнивайте все заказы дня, включая отмененные: сейчас вопрос в том,
зарегистрировал ли магазин заказ, а не в том, был ли он оплачен.
Найдите разрыв в событиях
При оформлении заказа посетитель видит страницу подтверждения, а трекер отправляет событие покупки. Просмотр страницы и покупка — отдельные события.
Посчитайте просмотры страницы подтверждения и события покупки:
- у просмотра
event_type = 'pageview', аurlзаканчивается на/confirmation; - у покупки
event_type = 'purchase'.
Вычтите число событий покупки из числа просмотров подтверждения. Сохраните оба счетчика и разность. Как соотносились бы эти числа, если бы для каждого заказа пришло ровно по одному событию каждого вида? Что можно предположить по вашему результату и чего эти два числа еще не доказывают?
Сверьте с магазином
В событии номер заказа находится в purchase_id[1], в заказах — в order_id.
Соберите список заказов выбранного дня, для которых нет события покупки.
Несколько событий с одним номером заказа должны оставаться одной покупкой.
Проверьте два равенства:
- число заказов магазина равно числу разных заказов из событий плюс число заказов без события;
- разность просмотров подтверждения и событий покупки равна числу заказов без события.
Первое равенство проверяет полноту сопоставления источников. Второе связывает разность счетчиков с найденными заказами без события. Проверьте, как на него влияют повторные покупки.
Найдите номер заказа с несколькими событиями purchase. Для его client_id
выведите события рядом с этими покупками по времени: event_time,
event_type и url. Найдите просмотры /confirmation перед первой
и повторной покупкой. Посчитайте, сколько повтор добавил просмотров
подтверждения и сколько — покупок. Изменилась ли от этих добавлений разность
счетчиков? Подтвердите ответ найденными строками. Второе равенство относится
к устройству этого стенда; для другого источника его нужно проверять заново.
Если в выбранном дне повторов нет, возьмите другой закрытый день. Для оценки доли потерь используйте число заказов магазина. Затем посчитайте долю с тем же числителем, но с числом просмотров подтверждения в знаменателе. Совпали ли результаты? Свяжите различие знаменателей с найденными событиями.
Сопоставьте вывод с готовой сверкой
Найдите свои заказы без события в dm.purchase_vs_orders_v по order_id.
Сравните их status и mismatch_class. Витрина присваивает заказу один класс,
хотя причин расхождения может быть несколько. По
правилу классификации
объясните, почему потеря события не всегда попадает в lost_event.
Возьмите один заказ из своего списка и сохраните два запроса: первый находит его в магазине, второй показывает отсутствие покупки в трекере. Сформулируйте, какой источник нужен для отчета о поведении посетителей, а какой — для денег.
Что должно получиться
- сохранены день, счетчики воронки и список заказов без события;
- оба равенства сходятся, влияние повторного просмотра объяснено;
- доля потерь посчитана с обоснованным знаменателем;
- один случай подтвержден запросами к обоим источникам;
- вы различаете отсутствие события и класс строки в готовой сверке.