Как организовать разметку приложения событиями?
Недавно прилетел вопрос от коллеги: «Как правильно размечать событиями сайт или приложение? Есть ли какие-то чек-листы или best practice?».
Вопрос настолько хороший и фундаментальный, что я вспомнил молодость и решил накатать целый пост-напоминалку. Потому что если с самого начала накосячить с разметкой, то и все последующие аналитические выводы могут оказаться красивой, но бессмысленной картинкой.
Когда-то я отвечал за событийную аналитику нескольких крупных проектов и уже тогда выработал простой и, что важно, масштабируемый принцип. Он отлично приживается и на сайтах, и в мобилках.
Представьте, что ваше приложение – это матрешка
У нас есть экраны: main, catalog, cart.
Каждый экран мы мысленно делим на крупные блоки (например, header, product_grid, recommendations_slider).
А эти блоки, в свою очередь, состоят из элементов (cart_button, favorite_icon, product_card).
Любое действие пользователя – это законченная история, которая собирается по четкому сценарию. Но как её записать? Здесь есть развилка, и нужно выбрать один из двух основных вариантов формирования события.
Вариант 1
Событие создается по правилам:
Например:
Плюсы:
▪️Удобно анализировать в интерфейсе аналитических систем.
▪️Не нужно строить сложные фильтры, чтобы увидеть все клики в каталоге продуктов.
▪️По имени события сразу понятно, где, что и как произошло.
Минусы:
▪️Риск упереться в лимиты на количество уникальных событий. Если у вас очень сложное приложение, таких комбинаций может накопиться несколько тысяч.
Вариант 2
Событие состоит только из действия:
Но вся магия кроется в параметрах! В них мы и прописываем screen_name, block_name, element_name.
Например:
Параметры:
Плюсы:
▪️Простой и понятный список событий. У вас будет всего несколько десятков базовых действий. Система не захламлена.
▪️Легко добавить новый элемент или блок, не создавая новое уникальное событие.
Минусы:
▪️Требуется предварительная обработка. Для анализа вам постоянно придется фильтровать одно и то же событие по разным параметрам.
Независимо от выбранного варианта, душа события – это его параметры. Обязательно продумайте их: от базовых, вроде user_id и app_version, до кастомных, вроде product_id, promo_name или source.
Предостережение
Главный соблазн для любого начинающего аналитика – начать трекать ВСЁ. «А давайте еще повесим событие на скролл, на наведение курсора, на смену времени суток в приложении!». Стоп! Помните, что у всего есть своя цена.
Системы аналитики вроде Google Analytics, AppsFlyer или AppMetrica имеют лимиты на количество регистрируемых событий. Например, вот выдержка из доки:
Упершись в потолок, вы можете начать терять важные данные. Да и хранение каждого события в вашей БД – это прямые серверные затраты.
Поэтому мой совет: раз в полгода-год проводите аудит. Удаляйте устаревшие события, которые больше никто не анализирует.
В общем, друзья, в разметке событиями нет ничего архисложного. Немного структуры, здравого смысла и планирования на старте, и ваша аналитика будет стоять на крепком фундаменте. Удачи в трекинге!
#опыт
Недавно прилетел вопрос от коллеги: «Как правильно размечать событиями сайт или приложение? Есть ли какие-то чек-листы или best practice?».
Вопрос настолько хороший и фундаментальный, что я вспомнил молодость и решил накатать целый пост-напоминалку. Потому что если с самого начала накосячить с разметкой, то и все последующие аналитические выводы могут оказаться красивой, но бессмысленной картинкой.
Когда-то я отвечал за событийную аналитику нескольких крупных проектов и уже тогда выработал простой и, что важно, масштабируемый принцип. Он отлично приживается и на сайтах, и в мобилках.
Представьте, что ваше приложение – это матрешка
У нас есть экраны: main, catalog, cart.
Каждый экран мы мысленно делим на крупные блоки (например, header, product_grid, recommendations_slider).
А эти блоки, в свою очередь, состоят из элементов (cart_button, favorite_icon, product_card).
Любое действие пользователя – это законченная история, которая собирается по четкому сценарию. Но как её записать? Здесь есть развилка, и нужно выбрать один из двух основных вариантов формирования события.
Вариант 1
Событие создается по правилам:
screen_name + block_name + element_name + action
Например:
catalog_product_grid_cart_button_click
Плюсы:
▪️Удобно анализировать в интерфейсе аналитических систем.
▪️Не нужно строить сложные фильтры, чтобы увидеть все клики в каталоге продуктов.
▪️По имени события сразу понятно, где, что и как произошло.
Минусы:
▪️Риск упереться в лимиты на количество уникальных событий. Если у вас очень сложное приложение, таких комбинаций может накопиться несколько тысяч.
Вариант 2
Событие состоит только из действия:
action
Но вся магия кроется в параметрах! В них мы и прописываем screen_name, block_name, element_name.
Например:
click
Параметры:
{screen_name: 'catalog', block_name: 'product_grid', element_name: 'cart_button'}
Плюсы:
▪️Простой и понятный список событий. У вас будет всего несколько десятков базовых действий. Система не захламлена.
▪️Легко добавить новый элемент или блок, не создавая новое уникальное событие.
Минусы:
▪️Требуется предварительная обработка. Для анализа вам постоянно придется фильтровать одно и то же событие по разным параметрам.
Независимо от выбранного варианта, душа события – это его параметры. Обязательно продумайте их: от базовых, вроде user_id и app_version, до кастомных, вроде product_id, promo_name или source.
Предостережение
Главный соблазн для любого начинающего аналитика – начать трекать ВСЁ. «А давайте еще повесим событие на скролл, на наведение курсора, на смену времени суток в приложении!». Стоп! Помните, что у всего есть своя цена.
Системы аналитики вроде Google Analytics, AppsFlyer или AppMetrica имеют лимиты на количество регистрируемых событий. Например, вот выдержка из доки:
В AppMetrica есть суточные лимиты на кастомные события, присылаемые через SDK и Post API. Суточный лимит — 3 250 000 событий на тарифе Free.
Упершись в потолок, вы можете начать терять важные данные. Да и хранение каждого события в вашей БД – это прямые серверные затраты.
Поэтому мой совет: раз в полгода-год проводите аудит. Удаляйте устаревшие события, которые больше никто не анализирует.
В общем, друзья, в разметке событиями нет ничего архисложного. Немного структуры, здравого смысла и планирования на старте, и ваша аналитика будет стоять на крепком фундаменте. Удачи в трекинге!
#опыт
1👍23🔥7❤1
Always be the worst guy…
Эта фраза из книги так зацепила меня, что я решил осмыслить ее через написание поста 🙂
Она не про то, чтобы быть лузером, она про развитие. А смысл ее достаточно прост: всегда ищи окружение, где ты не дотягиваешь. Потому что только так происходит рост.
Большинство людей же напротив выбирает комфорт: быть «опытным специалистом», к которому идут за советом, чувствовать уверенность, знать все ответы. Это приятно, но опасно. Комфорт убивает развитие. Настоящий рост начинается там, где ты чувствуешь себя немного глупо, где есть люди, у которых хочется учиться.
В аналитике, IT, менеджменте это ощущается особенно остро. Когда вокруг сильные специалисты, тебе просто не дают застояться. Они показывают пример: как решать задачи быстрее, писать код аккуратнее, формулировать гипотезы точнее.
Иногда рядом с такими людьми чувствуешь себя неуверенно, но именно это состояние и есть двигатель прогресса. Через год ты оглядываешься назад и понимаешь – стал совсем другим.
И наоборот – если долго находишься в команде, где ты самый сильный, ты перестаешь расти. Все кажется знакомым, решения повторяются, задачи похожи. Комфортно, спокойно, предсказуемо и абсолютно бесперспективно.
Наша траектория формируется не великими решениями, а ежедневными мелочами. С кем мы работаем. У кого учимся. Как проводим время. Куда ходим – на конференцию или в бар. Хотя, если честно, и в баре иногда завязываются отличные знакомства – просто не стоит делать это своей основной стратегией развития 🙃
Поэтому если чувствуешь, что вокруг все слишком знакомо и спокойно – возможно, пора сменить окружение.
Потому что быть самым слабым в команде – не стыдно. Стыдно – застрять там, где ты не развиваешься.
#мысли
Always be the worst guy in every band you’re in. If you’re the best guy, you need to find another band. And always be around people who are better than you, so you can learn.
– Чад Фаулер, «The Passionate Programmer»
Эта фраза из книги так зацепила меня, что я решил осмыслить ее через написание поста 🙂
Она не про то, чтобы быть лузером, она про развитие. А смысл ее достаточно прост: всегда ищи окружение, где ты не дотягиваешь. Потому что только так происходит рост.
Большинство людей же напротив выбирает комфорт: быть «опытным специалистом», к которому идут за советом, чувствовать уверенность, знать все ответы. Это приятно, но опасно. Комфорт убивает развитие. Настоящий рост начинается там, где ты чувствуешь себя немного глупо, где есть люди, у которых хочется учиться.
В аналитике, IT, менеджменте это ощущается особенно остро. Когда вокруг сильные специалисты, тебе просто не дают застояться. Они показывают пример: как решать задачи быстрее, писать код аккуратнее, формулировать гипотезы точнее.
Иногда рядом с такими людьми чувствуешь себя неуверенно, но именно это состояние и есть двигатель прогресса. Через год ты оглядываешься назад и понимаешь – стал совсем другим.
И наоборот – если долго находишься в команде, где ты самый сильный, ты перестаешь расти. Все кажется знакомым, решения повторяются, задачи похожи. Комфортно, спокойно, предсказуемо и абсолютно бесперспективно.
Наша траектория формируется не великими решениями, а ежедневными мелочами. С кем мы работаем. У кого учимся. Как проводим время. Куда ходим – на конференцию или в бар. Хотя, если честно, и в баре иногда завязываются отличные знакомства – просто не стоит делать это своей основной стратегией развития 🙃
Поэтому если чувствуешь, что вокруг все слишком знакомо и спокойно – возможно, пора сменить окружение.
Потому что быть самым слабым в команде – не стыдно. Стыдно – застрять там, где ты не развиваешься.
#мысли
💯38❤18🔥6👎2
Друзья, привет!
Собрал для вас подборку своих последних постов на тему метрик, без которых невозможно управлять продуктом осознанно.
Чем глубже погружаешься в аналитику, тем яснее становится: именно LTV и CAC отвечают на главный вопрос – имеет ли продукт шанс на устойчивый рост. Они отражают не только эффективность маркетинга и ценообразования, но и то, насколько хорошо выстроены онбординг, удержание и продуктовая ценность.
▪️ Простой способ расчета LTV
▪️ LTV с учетом маржи и дисконтирования
▪️ Когортный LTV
▪️ Customer Acquisition Cost
▪️ Что делать, когда показатели посчитаны
Если тема вам близка – добавляйте пост в закладки, пригодится!
#харды #метрики
Собрал для вас подборку своих последних постов на тему метрик, без которых невозможно управлять продуктом осознанно.
Чем глубже погружаешься в аналитику, тем яснее становится: именно LTV и CAC отвечают на главный вопрос – имеет ли продукт шанс на устойчивый рост. Они отражают не только эффективность маркетинга и ценообразования, но и то, насколько хорошо выстроены онбординг, удержание и продуктовая ценность.
▪️ Простой способ расчета LTV
▪️ LTV с учетом маржи и дисконтирования
▪️ Когортный LTV
▪️ Customer Acquisition Cost
▪️ Что делать, когда показатели посчитаны
Если тема вам близка – добавляйте пост в закладки, пригодится!
#харды #метрики
❤16👍6🔥5
Иногда кажется, что ИИ влетел в нашу жизнь слишком быстро. Еще вчера мы учились программировать, ковырялись в формулах, сдавали лабы ночами… а сегодня половина задач в ВУЗах и на собеседованиях решается по схеме: вставил в чат – получил ответ – профит 🙈
Появился новый жанр – вайб-кодинг. Когда человек не совсем понимает, что делает, но ИИ выдает что-то, что выглядит как работа, и этого как будто бы достаточно.
Проблема не в том, что «раньше было лучше» или что технологии «портят молодежь». Проблема в том, что мы внезапно получили инструмент, который слишком легко имитирует компетентность.
Ситуация в ВУЗах
Недавно наткнулся на интересную дискуссию в сообществе МИФИ о использовании ChatGPT студентами из-за возросшей нагрузки непрофильными предметами. Студент получает задачу, не понимает или просто не успевает в ней разобраться и открывает ИИ. Через минуту готовое решение, с кодом, объяснениями и красивыми формулами.
Можно сдавать и закрывать предмет. А вот знания, увы не прикладываются автоматически. Более того, даже преподы грешат этим!
Уровень собеседований
Здесь все еще забавнее. Кандидат приходит на интервью, получает вопрос, кивает, «думает» пару секунд, а в реальности в это время спешно вбивает запрос в ChatGPT.
Ответ получается идеально гладким. Но главное даже не в том, что рекрутер это заметит (а опытные замечают почти сразу). Главная проблема, что таким путем ты рискуешь получить работу, к которой вообще не готов.
Мы стоим на развилке
ИИ – невероятно мощный инструмент. Он может ускорять обучение, помогать понять сложные темы, разбирать код, объяснять формулы человеческим языком.
Но если сводить его роль к «сделай за меня», то мы попадаем в ловушку: перестаем различать, что мы понимаем, а что просто красиво сделано за нас.
Как быть?
Кажется, все упирается в честность перед собой.
Если я использую ИИ, то он должен быть советчиком и навигатором, но не тем, кто сдает экзамены вместо меня. Потому что в реальности экзамен всегда впереди – просто его роль будет выполнять жизнь или реальная работа.
ИИ облегчил вход, но не отменил необходимость учиться. Он только изменил то, как мы учимся. И в этом нет ни плохого, ни хорошего, есть только ответственность пользоваться инструментом так, чтобы становиться сильнее, а не зависимее.
#мысли
Появился новый жанр – вайб-кодинг. Когда человек не совсем понимает, что делает, но ИИ выдает что-то, что выглядит как работа, и этого как будто бы достаточно.
Проблема не в том, что «раньше было лучше» или что технологии «портят молодежь». Проблема в том, что мы внезапно получили инструмент, который слишком легко имитирует компетентность.
Ситуация в ВУЗах
Недавно наткнулся на интересную дискуссию в сообществе МИФИ о использовании ChatGPT студентами из-за возросшей нагрузки непрофильными предметами. Студент получает задачу, не понимает или просто не успевает в ней разобраться и открывает ИИ. Через минуту готовое решение, с кодом, объяснениями и красивыми формулами.
Можно сдавать и закрывать предмет. А вот знания, увы не прикладываются автоматически. Более того, даже преподы грешат этим!
Уровень собеседований
Здесь все еще забавнее. Кандидат приходит на интервью, получает вопрос, кивает, «думает» пару секунд, а в реальности в это время спешно вбивает запрос в ChatGPT.
Ответ получается идеально гладким. Но главное даже не в том, что рекрутер это заметит (а опытные замечают почти сразу). Главная проблема, что таким путем ты рискуешь получить работу, к которой вообще не готов.
Мы стоим на развилке
ИИ – невероятно мощный инструмент. Он может ускорять обучение, помогать понять сложные темы, разбирать код, объяснять формулы человеческим языком.
Но если сводить его роль к «сделай за меня», то мы попадаем в ловушку: перестаем различать, что мы понимаем, а что просто красиво сделано за нас.
Как быть?
Кажется, все упирается в честность перед собой.
Если я использую ИИ, то он должен быть советчиком и навигатором, но не тем, кто сдает экзамены вместо меня. Потому что в реальности экзамен всегда впереди – просто его роль будет выполнять жизнь или реальная работа.
ИИ облегчил вход, но не отменил необходимость учиться. Он только изменил то, как мы учимся. И в этом нет ни плохого, ни хорошего, есть только ответственность пользоваться инструментом так, чтобы становиться сильнее, а не зависимее.
#мысли
Telegram
Кипящий МИФИ
ChatGPT против перегрузки
Говоря о качестве образования нужно в очередной раз обсудить две глобальные тенденции.
1⃣ Рост нагрузки.
На фоне желаний и требований расширить гуманитарный блок, повышения статуса всего блока компьютерных наук, повышения требований…
Говоря о качестве образования нужно в очередной раз обсудить две глобальные тенденции.
1⃣ Рост нагрузки.
На фоне желаний и требований расширить гуманитарный блок, повышения статуса всего блока компьютерных наук, повышения требований…
👍21💯9🔥6❤4🦄2🤔1
Дорогие друзья!
Честно – год был мега насыщенный и не все темы из моих планов дошли до вас. Обещаю исправиться! В следующем буду писать больше, глубже и, надеюсь, полезнее.
А теперь – новогодний тост-заклинание! Пусть в новом году:
🎄ваши метрики растут, а расходы нет,
🍰 тесты прокрашиваются, а баги исправляются,
🙈 релизы выходят, а сон крепчает,
🍾 цели сходятся, а ненужное – уходит.
Спасибо, что остаетесь здесь. Все будет хорошо!
С Новым годом!
Честно – год был мега насыщенный и не все темы из моих планов дошли до вас. Обещаю исправиться! В следующем буду писать больше, глубже и, надеюсь, полезнее.
А теперь – новогодний тост-заклинание! Пусть в новом году:
🎄ваши метрики растут, а расходы нет,
🍰 тесты прокрашиваются, а баги исправляются,
🙈 релизы выходят, а сон крепчает,
🍾 цели сходятся, а ненужное – уходит.
Спасибо, что остаетесь здесь. Все будет хорошо!
С Новым годом!
1❤44👍2
Возвращаемся в строй
Отдых вышел что надо - долгий и ленивый 🦥
Я провел его дома под пледом, с Гарри Поттером на экране и «Ведьмаком» в консоли. Пару раз выгонял себя на пробежки в лес (сосны в инее - это волшебно!), а в самый снегопад даже удалось устроить выезд на квадроциклах с друзьями.
Этот перерыв был нужен, чтобы перезагрузить голову, выдохнуть и собраться с мыслями. И теперь я готов к новому году с новыми идеями и энергией.
А что будет в канале дальше? 🤔
В фокусе - харды. Много. Буду делиться знаниями и разбирать сложные темы.
Ждите про:
▪SQL и оптимизацию запросов;
▪Python для анализа данных и разработки;
▪ML и статистику;
▪Немножко A/B;
▪И конечно, мои любимые метрики - куда ж без них.
Чтобы было проще находить нужное, вводим навигацию по тегам:
#харды - про код, данные и алгоритмы;
#софты - переговоры, презентации, работа в команде;
#карьера - рост от джуна до лида, фишки развития;
#книга - must-read для прокачки и иногда для души;
#мысли - мое мнение в свободном (и иногда хулиганском) формате;
#опыт - стратегии, кейсы, лайфхаки из реальных проектов;
#личное - учеба в маге, спорт, вылазки на природу.
Цель - делать контент, который будет вам полезен и интересен. Если есть темы, которые хотите разобрать - пишите в комментарии, обязательно учту.
Рад снова быть на связи! Давайте заряжать этот год вместе.
Отдых вышел что надо - долгий и ленивый 🦥
Я провел его дома под пледом, с Гарри Поттером на экране и «Ведьмаком» в консоли. Пару раз выгонял себя на пробежки в лес (сосны в инее - это волшебно!), а в самый снегопад даже удалось устроить выезд на квадроциклах с друзьями.
Этот перерыв был нужен, чтобы перезагрузить голову, выдохнуть и собраться с мыслями. И теперь я готов к новому году с новыми идеями и энергией.
А что будет в канале дальше? 🤔
В фокусе - харды. Много. Буду делиться знаниями и разбирать сложные темы.
Ждите про:
▪SQL и оптимизацию запросов;
▪Python для анализа данных и разработки;
▪ML и статистику;
▪Немножко A/B;
▪И конечно, мои любимые метрики - куда ж без них.
Чтобы было проще находить нужное, вводим навигацию по тегам:
#харды - про код, данные и алгоритмы;
#софты - переговоры, презентации, работа в команде;
#карьера - рост от джуна до лида, фишки развития;
#книга - must-read для прокачки и иногда для души;
#мысли - мое мнение в свободном (и иногда хулиганском) формате;
#опыт - стратегии, кейсы, лайфхаки из реальных проектов;
#личное - учеба в маге, спорт, вылазки на природу.
Цель - делать контент, который будет вам полезен и интересен. Если есть темы, которые хотите разобрать - пишите в комментарии, обязательно учту.
Рад снова быть на связи! Давайте заряжать этот год вместе.
👍49🔥17❤8👾1
Почему оконные функции - это суперсила аналитика?
Знакомы с проблемой? Вам нужно посчитать долю каждой продажи в общей выручке за месяц, сравнить сегодняшний показатель со вчерашним или составить рейтинг товаров внутри категории. Обычные агрегатные функции (с GROUP BY или без него) «схлопывают» строки и детализация теряется.
Здесь на сцену выходят оконные функции. Их суперсила в том, что они производят вычисления над группой строк (окном), но не сливают их в одну, а добавляют результат как новый столбец к каждой исходной строке.
Проще на примере:
Аналогия:
Представьте, что вы учитель.
▪Обычный запрос - это выставить одну общую среднюю оценку всему классу.
▪Оконная функция - это рядом с каждой личной оценкой ученика написать средний балл по классу для сравнения.
Где использовать оконки?
При подсчете скользящего среднего, накопительных итогов, ранжирования, расчете долей, сравнения строк.
В следующем посте подробнее погрузимся в синтаксис и научимся создавать окна.
А пока поделитесь насколько сложно вам было осваивать оконные функции?
🤯 - сложно
🥱 - изи
#харды #sql
Знакомы с проблемой? Вам нужно посчитать долю каждой продажи в общей выручке за месяц, сравнить сегодняшний показатель со вчерашним или составить рейтинг товаров внутри категории. Обычные агрегатные функции (с GROUP BY или без него) «схлопывают» строки и детализация теряется.
Здесь на сцену выходят оконные функции. Их суперсила в том, что они производят вычисления над группой строк (окном), но не сливают их в одну, а добавляют результат как новый столбец к каждой исходной строке.
Проще на примере:
-- Обычная сумма возвращает одну строку
SELECT SUM(revenue) FROM orders;
-- Оконная сумма добавляет общий итог к КАЖДОЙ строке
SELECT
*,
SUM(revenue) OVER() AS total_revenue
FROM orders;
Аналогия:
Представьте, что вы учитель.
▪Обычный запрос - это выставить одну общую среднюю оценку всему классу.
▪Оконная функция - это рядом с каждой личной оценкой ученика написать средний балл по классу для сравнения.
Где использовать оконки?
При подсчете скользящего среднего, накопительных итогов, ранжирования, расчете долей, сравнения строк.
В следующем посте подробнее погрузимся в синтаксис и научимся создавать окна.
А пока поделитесь насколько сложно вам было осваивать оконные функции?
🤯 - сложно
🥱 - изи
#харды #sql
🥱44🤯17👍10❤3🤔2
Учимся создавать «окна» в SQL
В прошлом посте мы узнали, зачем нужны оконные функции. Теперь научимся их объявлять. Все начинается с инструкции OVER() - она и определяет наше «окно».
Ключевые команды внутри OVER():
▪️PARTITION BY - разделяет данные на группы (партиции). Как GROUP BY, но без «схлопывания» строк. Считает функцию внутри каждой группы отдельно.
▪️ORDER BY - сортирует строки внутри окна. Критично для функций нарастающего итога, ранжирования и смещения (LAG/LEAD).
Разберем на примере простой таблички, содержащей дату, канал с которого пришел пользователь и количество конверсий:
Что произойдет?
▪PARTITION BY Date создаст отдельное «окно» для каждой даты. Сумма будет считаться только в рамках одного дня.
▪ORDER BY medium отсортирует каналы внутри каждой даты.
▪SUM(conversions) в паре с ORDER BY рассчитает нарастающий итог конверсий внутри каждого дня. Для первой строки в окне (дне) sum будет равен ее conversions, для второй - сумме первой и второй, и так далее.
⚠️ Важно: ROWS / RANGE управляют диапазоном строк, по которым считается оконная функция. И даже если ничего не указывать, то по умолчанию используется RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.
В результате выполнения запроса мы получим примерно такую табличку:
Основы разобрали! Далее я расскажу как сужать фокус окна до «скользящего» диапазона с помощью ROWS BETWEEN.
#харды #sql
В прошлом посте мы узнали, зачем нужны оконные функции. Теперь научимся их объявлять. Все начинается с инструкции OVER() - она и определяет наше «окно».
Ключевые команды внутри OVER():
▪️PARTITION BY - разделяет данные на группы (партиции). Как GROUP BY, но без «схлопывания» строк. Считает функцию внутри каждой группы отдельно.
▪️ORDER BY - сортирует строки внутри окна. Критично для функций нарастающего итога, ранжирования и смещения (LAG/LEAD).
Разберем на примере простой таблички, содержащей дату, канал с которого пришел пользователь и количество конверсий:
SELECT
date AS dt
, medium AS med
, conversions AS conv
, SUM(conversions) OVER(PARTITION BY date ORDER BY medium) AS sum
FROM orders
Что произойдет?
▪PARTITION BY Date создаст отдельное «окно» для каждой даты. Сумма будет считаться только в рамках одного дня.
▪ORDER BY medium отсортирует каналы внутри каждой даты.
▪SUM(conversions) в паре с ORDER BY рассчитает нарастающий итог конверсий внутри каждого дня. Для первой строки в окне (дне) sum будет равен ее conversions, для второй - сумме первой и второй, и так далее.
⚠️ Важно: ROWS / RANGE управляют диапазоном строк, по которым считается оконная функция. И даже если ничего не указывать, то по умолчанию используется RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.
В результате выполнения запроса мы получим примерно такую табличку:
dt med conv sum
10.05.20 cpa 1 1
10.05.20 cpc 2 3
10.05.20 organic 1 4
11.05.20 cpa 1 1
11.05.20 cpc 3 4
11.05.20 direct 1 5
11.05.20 organic 2 7
12.05.20 cpc 1 1
12.05.20 organic 2 3
Основы разобрали! Далее я расскажу как сужать фокус окна до «скользящего» диапазона с помощью ROWS BETWEEN.
#харды #sql
❤19👍13🤔1💯1
Сегодня поговорим про экосистемные метрики. Или, если слово «экосистема» кажется слишком громким - про мультипродуктовые, сквозные пользовательские метрики.
В России настоящих экосистем не так уж много: Т-Банк, Сбер, Яндекс, МТС. Но чтобы применять экосистемные метрики, не обязательно быть «экосистемой». Достаточно иметь несколько продуктов и общего пользователя.
Сначала давайте разберемся, что же такое «экосистема»?
Когда у компании один продукт, чаще всего все довольно просто и грубо. Обычно считают доходы и расходы. Юнит-экономика, Retention, LTV и CAC приходят позже, когда продуктов становится больше и бизнес усложняется.
И вот здесь часто возникает ошибка: каждый продукт продолжают измерять изолированно, как будто пользователь существует внутри одного сервиса. Но пользователь так не живет. Он может прийти через один продукт, попробовать второй, регулярно пользоваться третьим, а деньги принести в четвертом. Для клиента это один непрерывный опыт, а для аналитики - набор разрозненных витрин.
А что такое «экосистемная метрика»?
Такие метрики нужны не «для красоты». Они используются в дереве метрик, чтобы понимать вклад конкретного продукта во всю систему, а также чтобы корректно оценивать эффекты A/B-тестов, которые почти всегда выходят за рамки одного продукта.
Когда компания начинает смотреть на бизнес через призму «мультипродуктовости», сильно меняется управленческое мышление. Отдельный продукт может быть убыточным или вообще не монетизироваться, но при этом оставаться важной частью всей конструкции - снижать стоимость привлечения, усиливать вовлечение, повышать удержание или раскрывать ценность других продуктов. В продуктовой логике такие сервисы хочется закрыть. В экосистемной - это элементы, из которых собирается эффективная бизнес-модель.
Дополнительно появляется эффект снижения CAC и роста удержания. Пользователей можно вовлекать в новые продукты не только через внешний маркетинг, но и за счет уже существующей базы. А пользователь, который использует несколько продуктов, значительно реже полностью уходит, даже если один из сервисов перестал быть для него ценным.
Какой вывод?
Если у вас несколько продуктов, не живите в логике одного продукта. Не измеряйте бизнес как набор независимых сервисов. Измеряйте пользователя ваших продуктов - именно там находится реальная ценность и реальные управленческие решения.
#харды #метрики
В России настоящих экосистем не так уж много: Т-Банк, Сбер, Яндекс, МТС. Но чтобы применять экосистемные метрики, не обязательно быть «экосистемой». Достаточно иметь несколько продуктов и общего пользователя.
Сначала давайте разберемся, что же такое «экосистема»?
Экосистема - это портфель продуктов, в основе которого лежит платформа единого профиля пользователя и между продуктами которого существует передаточная ценность.
Это система взаимосвязей между продуктами и сервисами, добавляющая им ценность. В определенный момент связи дают больше пользы, чем все составные части экосистемы в сумме.
Когда у компании один продукт, чаще всего все довольно просто и грубо. Обычно считают доходы и расходы. Юнит-экономика, Retention, LTV и CAC приходят позже, когда продуктов становится больше и бизнес усложняется.
И вот здесь часто возникает ошибка: каждый продукт продолжают измерять изолированно, как будто пользователь существует внутри одного сервиса. Но пользователь так не живет. Он может прийти через один продукт, попробовать второй, регулярно пользоваться третьим, а деньги принести в четвертом. Для клиента это один непрерывный опыт, а для аналитики - набор разрозненных витрин.
А что такое «экосистемная метрика»?
Экосистемная метрика - это метрика, описывающая сразу несколько продуктов, а не один конкретный.
Это метрика, которая позволяет перейти от математики продукта к математике пользователя и экосистемы в целом.
Такие метрики нужны не «для красоты». Они используются в дереве метрик, чтобы понимать вклад конкретного продукта во всю систему, а также чтобы корректно оценивать эффекты A/B-тестов, которые почти всегда выходят за рамки одного продукта.
Когда компания начинает смотреть на бизнес через призму «мультипродуктовости», сильно меняется управленческое мышление. Отдельный продукт может быть убыточным или вообще не монетизироваться, но при этом оставаться важной частью всей конструкции - снижать стоимость привлечения, усиливать вовлечение, повышать удержание или раскрывать ценность других продуктов. В продуктовой логике такие сервисы хочется закрыть. В экосистемной - это элементы, из которых собирается эффективная бизнес-модель.
Дополнительно появляется эффект снижения CAC и роста удержания. Пользователей можно вовлекать в новые продукты не только через внешний маркетинг, но и за счет уже существующей базы. А пользователь, который использует несколько продуктов, значительно реже полностью уходит, даже если один из сервисов перестал быть для него ценным.
Какой вывод?
Если у вас несколько продуктов, не живите в логике одного продукта. Не измеряйте бизнес как набор независимых сервисов. Измеряйте пользователя ваших продуктов - именно там находится реальная ценность и реальные управленческие решения.
#харды #метрики
👍14❤8
Если вы искали исчерпывающий курс по управлению данными, то он здесь, в одной книге на 800 страниц. Но приготовьтесь - это вам не «Котики».
📚 DAMA-DMBOK: Свод знаний по управлению данными. 2-е издание
The Data Management Association - это международная некоммерческая организация, которая поддерживает и развивает профессиональное сообщество в области управления данными. Она была основана в 1980-х и ранее называлась Data Administration Management Association или сокращенно DAMA. Организация знаменита публикацией ключевого справочника по управлению данными Data Management Body of Knowledge или DMBOK.
Справочник DAMA-DMBOK содержит лучшие практики, методологии и рекомендации по различным аспектам управления данными. Он охватывает 10 ключевых областей, включая архитектуру и проектирование данных, хранилища данных и бизнес-аналитику, управление качеством данных и метаданными. Авторы стремятся стандартизировать процессы работы с данными и улучшить их управление. Поэтому DAMA-DMBOK - стандарт в дата-менеджменте и основное пособие для подготовки к экзамену на Certified Data Management Professional (CDMP). Берем на заметку.
🔗 Первое издание вышло в 2009 году, второе опубликовано в 2017 году. Именно оно переведено на русский язык и продается в бумажном варианте за много денег, например, на OZON. Электронную версию в PDF - качайте по ссылке.
#книга
📚 DAMA-DMBOK: Свод знаний по управлению данными. 2-е издание
The Data Management Association - это международная некоммерческая организация, которая поддерживает и развивает профессиональное сообщество в области управления данными. Она была основана в 1980-х и ранее называлась Data Administration Management Association или сокращенно DAMA. Организация знаменита публикацией ключевого справочника по управлению данными Data Management Body of Knowledge или DMBOK.
Справочник DAMA-DMBOK содержит лучшие практики, методологии и рекомендации по различным аспектам управления данными. Он охватывает 10 ключевых областей, включая архитектуру и проектирование данных, хранилища данных и бизнес-аналитику, управление качеством данных и метаданными. Авторы стремятся стандартизировать процессы работы с данными и улучшить их управление. Поэтому DAMA-DMBOK - стандарт в дата-менеджменте и основное пособие для подготовки к экзамену на Certified Data Management Professional (CDMP). Берем на заметку.
🔗 Первое издание вышло в 2009 году, второе опубликовано в 2017 году. Именно оно переведено на русский язык и продается в бумажном варианте за много денег, например, на OZON. Электронную версию в PDF - качайте по ссылке.
#книга
❤21