Откровенная аналитика
СтатистикаКанал про аналитику 📊, карьеру 🧑💻 и деньги 💵 Я Ваня) Работаю в Технопарке, ex. Yandex, OZON Учусь в ВШЭ Делюсь историями, опытом и инсайтами как стать аналитиком, развиваться в индустрии и больше зарабатывать
- Последний пост
- 4 дек.
- Последнее чтение
- 13 авг.
- Постов за неделю
- 0
- Всего постов
- 19
- Тип
- открытый
- Язык
- русский
- Категория
- Скидки
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- —
- 1/48двое суток
- —
- 1/72трое суток
- —
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Джойн про который я узнал спустя 4 года работы в аналитике Недавно узнал, что помимо всех известных мне видов джойнов (а я думал, что знаю все) есть ещё как минимум один NATURAL JOIN Смысл в этого джойна в двух вещах: 1. Вы не указываете условия джойна. Он сам ищет в таблицах колонки с одинаковыми названиями и джойниь по ним 2. Сохраняет в результате только одну из двух одинаковых колонок Выглядит примерно так SELECT * FROM pupa NATURAL JOIN lupa Есть правда у этого джойна один минус Он абсолютно бесполезный. В основном по трём причинам: 1. Не гибкий. Ничего поправить в условии вы не можете, потому что условия то и нет 2. Непредсказуемый. Если у вас поменяются колонки в таблице, то джойн может вернуть что угодно (вплоть до декартова произведения) 3. Неудобно поддерживать. Если код писали не вы, то читать будет не особенно удобно, потому что не понятно, по какому условию там джойнится Единственная ситуация когда этот джойн может пригодиться - вам надоел собеседующий на sql секции. Тогда можно написать что-нибудь с таким джойном, чтобы он от вас наконец отстал
Почему каждый дашборд должен начинаться с дизайна И я сейчас не про подбор шрифтов и цветовю палитру) Я имею ввиду бизнес-дизай - то есть план того, кто, как и зачем будет пользоваться будущим дашбордом Почему это так важно: к сожалению, если броситься делать дашборд сразу (даже при наличии ТЗ), очень легко получить инструмент, которым не будут пользоваться или же будут часто просить дорабатывать. Причины могут быть разные: неудобно, непонятно, сложно и сходу не всегда видно, с какими трудностями столкнётся пользователь. Поэтому перед реализацией лучше потратить время на продумывание плана, чтобы избежать такой ситуации Что должен включать дизай? Если отбросить подробности то есть 4 основных пункта: 1. Понимание на какой вопрос должен отвечать дашборд. Нужно знать какую проблему пользователь собирается решать, от этого зависят остальные пункты 2. Ключевые метрики. Цифры, которые быстры дадут ответ на ключевой вопрос, с которым пришёл пользователь 3. Инструменты исследования. Дополнительные визуализации, которые позволят понят почему метрики из пункта 2 такие, какие есть 4. Сигналы к действию. Визуализации/способы отображения, которые подсветят пользователю что нужно делать. Наверное самый сложный пункт, который не всегда можно сделать Как дизайнить? К сожалению простого ответа на этот вопрос нет. Каждый раз нужно набрасывать cjm пользователся в твоём дашборде и отталкиваясь от этого проектировать свой отчёт. Но есть небольшой лафхак, если у вас хороший заказчик - можно просить его показать реальную задачу для которой ему нужен дашборд и описать как он её решает сейчас - как правило это как раз то, что нужно в дашборде
В эту пятницу буду выступать на матемаркетинге Расскажу про то как собрал ассистента на базе ЛЛМ, который способен выполнять аналитические запросы от бизнес заказчиков. А ещё покажу как сделать MVP такой штуки для своих задач Так что если интересно буду рад всех видеть на докладе А ещё мне дали спикерский промокод на 50%. Поэтому если нужно, то можно брать SPEAKER5071996
Как откликаться на вакансии куда сотни человек уже откликнулись Вы наверняка видели вакансии в HH, где количество откликов иногда достигает тысячи. Хочу поделиться способом откликаться на них Способ не новый, но про него часто забывают, поэтому поделюсь инструкцией как в разы повысить свои шансы: 1️⃣ Ищем компанию в LinkedIn 2️⃣ Во вкладке «Люди» (People) ищем по ключевым словам: Recruiter, Talent Acquisition, HR или то же самое на русском 3️⃣ Цель - найти рекрутера, который занимается IT или Data-направлением. Иногда они даже постят свои вакансии 4️⃣ Добавляем в контакты и дружелюбно предлагаем свою кандидатуру (и не забываем приложить ссылку на позицию, чтобы было проще понять куда откликаемся) Есть ещё пара дополнений, которые иногда помогают: 🟢 Посмотрите профиль в линке, возможно где-то (в описании, личном сайте, шапке профиля) оставили телеграм. В нём ответят ещё вероятнее 🟢 Если телеграма в линке нет, то пробуем поиск в телеграме по имени/фамилии. Часто ставят одинаковые фото профиля, поэтому появляется возможность опознать 🟢 Если всё ещё не получается можно попробовать найти в Сетке. Да-да, там правда многие зарегистрировались (правда многие больше не заходят) и можно найти контакты на соц сети
Задача из Meta, в которой многие ошибаются ☔️ Недавно в LinkedIn увидел задачку (говорят, что она из Meta) и бурное обсуждение решений в том числе с неправильными вариантами Звучит она так: Ты собираешься в Сиэтл и звонишь трём друзьям: идёт ли дождь? Каждый говорит правду с вероятностью 2/3 и врёт с вероятностью 1/3. Все трое ответили «Да, идёт дождь». Какова вероятность, что дождь действительно идёт? На интуиции хочется решить так: если дождя нет, вероятность трёх «да» 1/3*1/3*1/3 = 1/27. Значит вероятность дождя 1−1/27. Но это ошибка Правильный подход: 1️⃣ Посчитать вероятность, что дождь идёт и все сказали «да». 2️⃣ Посчитать вероятность, что дождя нет, но все всё равно сказали «да». 3️⃣ Поделить первое на сумму первого и второго. Но для этого нужно знать априорную вероятность дождя в Сиэтле! Если, например, город в пустыне и дождя там не бывает, то три «да» от друзей не значат ничего - они просто соврали. Вероятность дождя = 0%. И наоборот, если в Сиэтле дожди почти каждый день, то три «да» усиливают эту уверенность. Так что правильный ответ интервьюеру: «Сначала скажи, как часто в среднем идёт дождь в Сиэтле, а потом обсудим вероятность»
Попробовал Google CLI и был приятно удивлён результатом Не так давно гугл выпустил своего ассистента для редактирования кода и я дошёл до того, чтобы его попробовать. Устанавливается прямо в вашу IDE (у меня был VS Code) и пишет сразу в репозиторий, может даже запустить, посмотреть результат и доработать Оказалось очень удобно - довольно хорошо кодит, особенно если есть примеры Ну и всё это бесплатно (Ну точнее бесплатно первые 100 запросов в день, но этого вполне достаточно) Применять для сложных проектов конечно не так безопасно, но вот с задачами типа: 1. Сделать из sql выгрузки ETL для витрины/дашборда 2. Посчитать аб-тест на новых данных 3. Сделать code-style С таким он прекрасно справляется и экономит кучу времени на рутинных делах Так что всем рекомендую И для лучшего опыта в начале использования лучше сделать две вещи: 1. Сказать ему чтобы посмотрел репозиторий (через @ваш_репозиторий) 2. Написать инструкции в GEMINI.md Инструкция по установке тут
Почему аналитику всё таки полезно знать алгоритмы Нет, я не буду доказывать что яндексовые АА секции это полезно. Я расскажу про кое что другое Представь такую задачу Ты стендист на какой-нибудь айтишной конференции. На стенд постоянно приходят участники, чтобы выиграть мерч или просто поболтать. В какой-то момент тебе надоело раздавать мерч и от скуки захотелось посчитать сколько же всего участников посетили твой стенд. Сложность в том, что каждый участник подходит к стенду по несколько раз, но зато у каждого на бейдже написан идентификатор участника (к сожалению число на бейдже рандомное, а не последовательное) Запоминать каждого в лицо не получается, по номеру тоже так себе. Так что же делать? И тут можно придумать вероятностный способ. Выберем какое-нибудь число, например 0. У каждого участника будем считать количество нулей в конце идентификатора и запоминать, какой максимум среди всех. А дальше используем такую логику: вероятность встретить один 0 в конце (то есть идентификатор вида ХХХХХ0) = 1/10, два нуля (ХХХХ00) - 1/100 и так далее. Тогда количество посетителей стенда будет 10 или 100, если мы встретили максимум один или два нуля в конце соответственно Теперь у нас есть приблизительная оценка порядка участников. Но слишком уж большой разрыв между соседними оценками: 10, 100, 1000 и дальше больше. Можно немного улучшить - брать не десятичную запись, а двоичную. Тогда оценка будет намного точнее: 2, 4, 8, 16 и так далее Примерно так работает алгоритм Флажоле-Мартина: хеширует идентификатор пользователя, считает количество нулей в конце для каждого пользователя и запоминает максимальное, число уникальных значений вычисляет как 2 в степени равной максимальному количеству нулей Зачем это нужно на практике, если можно считать уникальные значения точно. Потому что считать точно бывает очень дорого - например если у вас миллионы пользователей и миллиарды событий в приложении за каждый день, то посчитать MAU не уронив базу бывает очень сложно. Тут на выручку приходят такие алгоритмы Как попробовать самому: во многих БД примерный подсчёт уников уже есть. Например в clickhouse это функция uniq, в vertica, mssql, bigquery - APPROX_COUNT_DISTINCT. Работают за секунды, а ошибаются всего на пару процентов
Задача с собеса которую не смогли решить в LinkedIn Недавно увидел в линке разбор хитрой SQL-задачи про подсчёт количества общих друзей. Но решение было предложено не совсем правильное, поэтому захотел разобрать её сам Задача такая Есть таблица friends_table c колонками user, friend (это айдишники) Таблица содержит пары пользователей социальной сети, которые состоят в друзьях друг у друга Таблица устроена так, что user<friend (смысл этого условия в том, что каждая пара пользователей записана всего один раз) Для каждой пары пользователей вернуть число общих друзей Решение WITH AllFriendPairs AS ( SELECT user, friend FROM friends_table UNION ALL SELECT friend, user FROM friends_table ) -- Находим общих друзей для каждой исходной пары SELECT f1.user, f1.friend, COUNT(t2.friend) AS common_friends_count FROM friends_table AS f1 JOIN AllFriendPairs AS t1 ON f1.user = t1.user JOIN AllFriendPairs AS t2 ON f1.friend = t2.user AND t1.friend = t2.friend GROUP BY f1.user, f1.friend ORDER BY common_friends_count DESC; Оригинальный пост, в котором подсмотрел задачу тут
Куда пойти если хочешь релоцироваться, но продолжить работать на русском Некоторое время назад задумывался о том, чтобы переехать и подыскивал себе компанию в которой сочетались бы три фактора: 1. Высокий уровень компетенций, чтобы не только работать, но и развиваться 2. Хорошая компенсационная часть, чтобы не просаживаться в деньгах 3. Русские команды, чтобы не заморачиваться с языком Хочу поделиться компаниями, которые больше всего понравились мне: 🚖 inDrive. Работают в райд хейлинге (это они так модно называют такси, где цену устанавливает пассажир). Много нестандартных интересных задач возникающих из-за специфики бизнес модели и зарплата в евро. Вакансии тут: https://careers.indrive.com/ 📦 Uzum. Самый быстро развивающийся узбекский бигтех (пока ещё не очень биг). Начинали с еды, но уже у них есть и маркетплейс и банк. Из минусов только зп в суммах (зато станете миллионером на одну зарплату). Вакансии тут https://hh.ru/employer/9173883 🦖 Playrix. Это такой вологодский supercell. Вы скорее всего или играли в их игры, или видели вездесущую рекламу). Вакансии тут: https://playrix.com/job/open
3 вопроса, которые стоит задать на собеседовании с рекрутером Я видел много рассуждений на тему, какие вопросы стоит задавать рекрутеру (в том числе списки включающие пару десятков вопросов 😁). Для себя остановился на этих трёх, которые считаю наиболее важными на этом этапе 1️⃣ Какая вилка. Часто рекрутер задаёт этот вопрос сам, но если нет, стоит брать инициативу в свои руки. Это критерий по которому определяю, стоит ли вообще дальше рассматривать вакансию. Если ожидаемая компенсация не покрывает твоих минимальных требований, лучше знать об этом сразу и рассматривать другие варианты 2️⃣ Какой формат работы. От этого зависит как будешь планировать время в рабочие дни - тоже лучше знать сразу 3️⃣ Какие этапы отбора. Позволяет понять, как долго вообще будут собеседовать и нужно ли что-то подготовить для более успешного прохождения будущих интервью
Как оптимизировать SQL-запрос одной строчкой кода Достаточно написать analyze schema.table перед выполнением запроса Как это работает: анализ таблицы позволяет внутреннему оптимизатору запросов базы данных получить информацию о состоянии таблицы и за счёт этого составить лучший вариант исполнения запроса Если объяснять на пальцах, то оптимизатор можно сравнить с навигатором, который который пытается построить самый лучший маршрут. По умолчанию он строит самый короткий. А analyze даёт ему дополнительные данные: где пробки, сколько полос на разных участках, какое покрытие на дорогах и за счёт этого можно получить маршрут намного быстрее Важно помнить, что analyze - это не панацея на все случаи жизни. Это не заменит работы по проектированию таблиц и запросов, но во-первых, усилит эффект от такой работы, а во-вторых, позволит быстро ускорить запрос, если вам сейчас не до оптимизации
Я наверное буду выглядеть как бабка, но кому-то это может спасти не одну сотню тысяч рублей, поэтому всё таки напишу Набирает популярность весьма занимательный способ развода на собесах (можно сказать special for it) Работает так: 1️⃣ Вам пишет агентство с предложением рассмотреть вакансию. Тут всё по классике 2️⃣ Встречаетесь с представителем от компании, собеседуетесь, получаете положительную ОС 3️⃣ Просят сделать финальное тестовое задание. И тут два варианта развода: 🔴 Вас просят выйти из вашего аккаунта Apple и зайти в "корпоративный" для тестирования приложения. После этого ваше устройство блокируют и требуют выкуп 🔴 Дают какой-то репозиторий. Просят запустить у себя и протестировать или дописать какой-нибудь модуль. В коде маскируют блок, который просматривает хранилище компа и ищет криптокошельки, креды, токены или что-нибудь похожее Самое креативное в схеме, что компания может реально нанять агентство (и вы его можете даже знать и доверять по прошлому опыту) и таким образом снизить бдительность Если кто-то из знакомых ищет работу, расскажите про такующ возможность, чтобы они не делали троянских тестовых. Помню как сам в начале карьеры легко соглашался на тестовые и мог бы легко такое проглядеть(
Как кастомизировать нейросеть Я почему то пропустил появление этой опции, поэтому решил поделиться если кто-то вдруг тоже не знал У нейросетей добавили возможность вставить в профиле системный промпт - инструкцию которая будет применяться при подготовке каждого ответа для вас. Очень удобно не объяснять требования к ответу в каждом чате, а задать их один раз и не вспоминать. И всё это доступно даже в бесплатной подписке Из наиболее широко применимого можно: - попросить чтобы нейросеть перестала расплываться в любезностях типа извините/простите/вы правы и вместо этого отвечала по существу - требовать валидацию фактов при подготовке ответа - указать особенности отрасли в которой работаешь А в целом удобно задавать и намного более сложные инструкции под специфику задач, которые решаешь Настраивается так: ChatGPT: Профиль (правый верхний угол) ➡️ Настроить ChatGPT Gemini: Настройки и справка ➡️ Сохранённая информация
В эти выходные вписался к коллегам на митинг, где сделаем три мини-выступления на разные темы в аналитике Я расскажу про приблизительный подсчёт уникальных значений в SQL (Вижу чей-то немой вопрос "зачем считать приблизительно, если можно точно" - на него тоже отвечу🤣) И будет ещё 2 презентации от коллег: Герингер Владимир - директор бизнес-аналитики, GLS pharmaceuticals: "Информационная система: архитектура решения" Автор канала: PharmaDataLab Снигирев Дмитрий - тимлид Core BI - Авито: "Как выглядит роль BI аналитика в требованиях разных компаний" Автор канала: Делаю BI 🗓29 июня 2025, 15:00 (воскресенье) Подключаться тут: https://telemost.yandex.ru/j/65617501912823
без подписи
Этой задачей любят кошмарить студентов на теории вероятностей и аналитиков на собесах Задача звучит так. В семье двое детей, какова вероятность что это две девочки, если известно что один из детей девочка. После ответа на первый вопрос (как правило неверного) задают второй: а какой будет вероятность, если известно, что старший из детей девочка Чтобы решить представим все возможные комбинации детей в семье из двух: 🙍♂️🙍♀️ (Мальчик, Девочка) 🙍♀️🙍♂️ (Девочка, Мальчик) 🙍♀️🙍♀️ (Девочка, Девочка) 🙍♂️🙍♂️ (Мальчик, Мальчик) А теперь разберём каждое из условий "Известно, что один из детей - девочка" Мы исключаем семью 🙍♂️🙍♂️. Остаются 🙍♂️🙍♀️, 🙍♀️🙍♂️, 🙍♀️🙍♀️. Из этих трёх вариантов только один - 🙍♀️🙍♀️ - соответствует тому, что в семье две девочки. Поэтому вероятность 1/3. "Известно, что старший из детей - девочка" Здесь мы исключаем варианты 🙍♂️🙍♀️ и 🙍♂️🙍♂️. Остаются 🙍♀️🙍♂️ и 🙍♀️🙍♀️. Из этих двух вариантов только один - 🙍♀️🙍♀️- соответствует тому, что в семье две девочки. Поэтому вероятность 1/2. Для наглядности нарисовал эти же комбинации на картинках⬇️
В reddit завирусилась история, что все ллм на просьбу загадать случайное число от 1 до 50 отвечают 27. Да так сильно что сам сооснователь ChatGPT назвал это mystery Возможно я чего-то не понимаю, но ничего удивительного не вижу. И те кто об этом пишут, как будто не читали ответы самих нейронок. В ответах видно же, что они не число загадывают, а наоборот твоё пытаются угадать. И лучшая стратегия в такой игре давно известна - это бинарный поиск. И вот это чудо все нейросети про него знают, поэтому и применяют - делают первое предположение по середине Ну а 27, вместо 25 говорят скорее всего потому, что люди считают не очень случайными числа с 5 в конце. Таким ллм чуть повышают шанс угадать с первого раза Поделитесь, согласны или я правда что-то упускаю во всей этой истории
Как оптимизировать SQL-запросы Наверное каждый аналитик в какой-то момент сталкивается с тем, что запрос начинает отрабатывать слишком долго (иногда даже часами, если в базе данных не установлены лимиты). Делюсь тремя функциями, которые позволяют найти, что и как оптимизировать Суть всех функций похожа - рассказать, как база данных собирается выполнять запрос и какие ресурсы на него потратит. Но есть некоторые отличия EXPLAIN Показывает, как база данных планирует выполнить ваш запрос. Вы увидите общий порядок операций и оценку вычислительных затрат на них. Подходит для определения самых очевидных узких мест EXPLAIN VERBOSE Углубленная версия EXPLAIN. Дает ещё больше деталей о плане выполнения, включая информацию об используемых колонках, способах джойна, сортировки и многое друго. Полезно, когда из обычного EXPLAIN не ясно что в запросе медленно работает PROFILE Самый мощный инструмент и мой любимый. Он не просто пишет план, он выполняет запрос, а потом показывает реальные затраты ресурсов (время, CPU) на каждом шаге выполнения запроса. Это помогает точно определить "бутылочное горлышко" и оптимизировать его. Синтаксис у функций одинаковый EXPLAIN -- или EXPLAIN VERBOSE или PROFILE SELECT * FROM table .... Ну и общий совет. Не стесняйтесь показывать результаты выполнения этих функций чату gpt. Функции возвращают достаточно подробный и не всегда понятный ход действий БД и понять его гораздо легче с помощью нейросетки, особенно в начале
CROSS JOIN