PrepBro
Профессии
PrepBro
Профессия:

Подготовка

  • Вопросы181
  • Задачи19

Аналитика

  • hh статистика
  • Анализ резюме

Практика

  • Тестовое собеседование
  • Mock-собеседование
  • Менторы

Поддержка / отзывы

Telegram админа
Профессия:

Подготовка

  • Вопросы181
  • Задачи19

Аналитика

  • hh статистика
  • Анализ резюме

Практика

  • Тестовое собеседование
  • Mock-собеседование
  • Менторы

Поддержка / отзывы

Telegram админа
Все 24 профессии
Android DeveloperData AnalystSystem Analyst1С DeveloperiOS DeveloperBusiness AnalystJava DeveloperData ScientistQA EngineerQA AutomationPHP BackendC/C++ BackendDevOps EngineerIT Project ManagerFrontend DeveloperNode.js BackendUnity DeveloperC# BackendProduct AnalystFlutter DeveloperPython DeveloperIT Product ManagerGo DeveloperData Engineer

© 2026 PrepBro. Все права защищены.

Telegram-бот

Вопросы по Data Analyst

Что такое CASE WHEN в SQL и как его использовать?
1.0 Junior🔥 30💬 1

Что такое CASE WHEN в SQL

CASE WHEN — это условный оператор SQL, который позволяет выполнять различные операции на основе заданных условий. Это аналог if-else в программировании. Он используется для трансформации данных и создания новых колонок с условными значениями.

Синтаксис CASE WHEN

Существует две формы синтаксиса:

Простая форма (с выражением)

CASE expression
  WHEN value1 THEN result1
  WHEN value2 THEN result2
  ELSE default_result
END

Поисковая форма (с условиями)

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  WHEN condition3 THEN result3
  ELSE default_result
END

Практические примеры

Пример 1: Категоризация по диапазону

SELECT 
  employee_id,
  salary,
  CASE
    WHEN salary < 50000 THEN Junior
    WHEN salary >= 50000 AND salary < 100000 THEN Middle
    WHEN salary >= 100000 THEN Senior
  END AS level
FROM employees;
Читать полностью ->
Что такое JOIN?
1.0 Junior🔥 30💬 1

SQL JOIN: полное руководство

JOIN — один из самых важных инструментов в SQL. Это основа для объединения данных из разных таблиц.

Что такое JOIN?

JOIN — это операция, которая комбинирует строки из двух (или более) таблиц на основе условия связи.

Просто говоря: я беру строки из таблицы A, ищу соответствующие строки в таблице B, и объединяю их.

Пример в реальной жизни:

Таблица Users:
id | name      | city
1  | Alice     | NYC
2  | Bob       | LA
3  | Charlie   | NYC

Таблица Orders:
id | user_id | amount
101| 1       | $100
102| 1       | $200
103| 2       | $150
104| 3       | $300

Что хочу: Вывести имя пользователя и его заказы

Что нужно: JOIN на user_id

Основные типы JOIN

1. INNER JOIN (пересечение)

SELECT u.id, u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

Результат:
id | name    | amount
1  | Alice   | 100
1  | Alice   | 200
2  | Bob     | 150
3  | Charlie | 300
Читать полностью ->
Расскажи про инструменты с которыми работаешь
1.0 Junior🔥 30💬 1

Инструменты Data Analyst: полный стек

В своей работе я использую комплексный набор инструментов для полного цикла анализа данных — от загрузки и обработки до визуализации и ML.

1. Языки программирования и данные

Python (основной язык)

# Типичный рабочий стек
import pandas as pd          # DataFrames и манипуляция данными
import numpy as np           # Численные вычисления
import matplotlib.pyplot as plt  # Визуализация
import seaborn as sns        # Статистическая графика
from scipy import stats      # Статистические тесты
scikit-learn                 # Machine Learning
import plotly               # Интерактивные графики

SQL (критически важен)

-- Работаю с PostgreSQL, MySQL, BigQuery
-- Основные паттерны:
Читать полностью ->
Расскажи о себе
1.0 Junior🔥 30💬 1

О себе

Я — Data Analyst с 10+ летним опытом работы в области аналитики данных. За этот период я прошёл путь от junior-специалиста до senior-аналитика, руководившего командой из 5-6 человек.

Ключевые компетенции

SQL & базы данных: Глубокое понимание реляционных БД (PostgreSQL, MySQL, T-SQL). Опыт оптимизации сложных запросов, работа с индексами, профилированием. Регулярно пишу оконные функции, CTE, работаю с миллионами строк данных.

Python & аналитика: Свободно работаю с pandas, numpy, scipy. Использую Python для ETL-процессов, статистического анализа, автоматизации рутины. Знаком с scikit-learn для базовой машинного обучения (кластеризация, регрессия).

Визуализация: Квалифицированно использую Tableau, Power BI, Looker. Создавал более 100 дашбордов, которые внедрялись в бизнес-процессы. Понимаю принципы effective data storytelling.

Читать полностью ->
Какие задачи решал с использованием Python?
1.0 Junior🔥 29💬 1

Задачи, решённые с использованием Python

1. ETL-процессы и автоматизация

Задача: Автоматизация загрузки данных из API в DWH

В e-commerce компании были данные о заказах, которые приходили из десяти различных источников (Shopify, WooCommerce, интеграции с маркетплейсами). Каждый источник имел разный формат данных.

Решение:

import requests
import pandas as pd
from datetime import datetime, timedelta
import logging

logger = logging.getLogger(__name__)
Читать полностью ->
Что такое ETL-процесс и какие его основные этапы?
1.6 Junior🔥 28💬 1

ETL-процесс: Определение и основные этапы

ETL (Extract, Transform, Load) — это фундаментальная архитектурная парадигма в области обработки данных. ETL-процесс описывает комплексный workflow для перемещения, преобразования и интеграции данных из разнородных источников в целевую систему хранения (Data Warehouse, Data Lake или операционные базы данных).

Основные этапы ETL

1. Extract (Извлечение)

Первый этап подразумевает извлечение данных из различных исходных систем:

  • Источники данных: базы данных, API, файлы (CSV, JSON, Parquet), облачные сервисы, логи приложений
  • Методы извлечения: полная выгрузка (Full Load) или инкрементальная выгрузка (Incremental Load)
  • Инструменты: SQL-запросы, REST API, специализированные коннекторы (Kafka, Spark, Talend)

Критически важно минимизировать нагрузку на исходные системы при извлечении данных.

Читать полностью ->
Расскажи про свой опыт работы
1.2 Junior🔥 28💬 1

Опыт работы

Мой путь в аналитике: от junior-специалиста (2013) до senior-аналитика и analytics lead (10+ лет опыта).

Роль 1: Junior/Mid Data Analyst (2013-2016, E-commerce маркетплейс)

Основное:

  • SQL запросы, Google Analytics, простые дашборды в Tableau
  • Ежедневные/еженедельные отчёты
  • Первые шаги в Python для автоматизации

Достижения:

  • Автоматизировал reporting → сэкономили 15 часов/неделю
  • Построил когортную аналитику (foundation для product decisions)
  • Выявил baggy интеграцию, исправления дали +$1M in corrected revenue
  • Провел первый A/B тест дизайна → +8% конверсия

Роль 2: Senior Data Analyst (2016-2019, FinTech Series B)

Обязанности:

  • Lead analytics projects
  • Mentor junior analyst
  • Работа с product/engineering/finance
  • Внедрение data-driven культуры
  • Airflow, Python, dbt, Tableau, Looker

Крупные проекты:

Читать полностью ->
Какие приоритеты при выборе компании?
1.0 Junior🔥 27💬 1

Критерии выбора компании для Data Analyst

1. Данные и инфраструктура

Качество и объёмы данных

Первое, что интересует меня — как устроена работа с данными в компании:

Ключевые вопросы на интервью:

  • Какие источники данных? (СРМ, веб-аналитика, мобильное приложение, BI-система, хранилище данных)
  • Объёмы данных? (ГБ, ТБ, ПБ?)
  • Качество данных? (есть ли дата-гвардс, валидация на входе?)
  • Как часто обновляются данные? (реал-тайм, ежедневно, еженедельно?)
  • Есть ли дата-инженеры? (или я буду разбираться с ETL сам?)

Почему это важно: Если данных нет или они ужасного качества, то весь анализ будет на песке. Я предпочитаю работать там, где данные — уже критичная инфраструктура, а не хаос.

Tech stack

Читать полностью ->
Какие задачи хочешь решать в области аналитики данных?
1.6 Junior🔥 27💬 1

Задачи, которые я хочу решать

1. Стратегические аналитические проекты

Меня привлекают задачи, где аналитика влияет на стратегические решения компании:

  • Оценка новых рынков: анализ потенциала входа в новый сегмент через данные о конкурентах, спросе, демографии
  • Оптимизация бизнес-модели: выявление наиболее прибыльных каналов, сегментов, операций
  • Долгосрочное планирование: построение forecast моделей, сценарное планирование (best case, worst case)

Эти задачи требуют не просто технических навыков, но и глубокого понимания бизнеса и экономики.

2. Growth Analytics

Читать полностью ->
С какими библиотеками работал в Python
1.0 Junior🔥 26💬 1

Python библиотеки в моей практике

Основной стек для анализа данных

За 10+ лет я использовал практически все основные библиотеки Python для аналитики. Расскажу про те, что я применял регулярно и глубоко.

1. Pandas — король анализа данных

Использование: ежедневно, на все 100%

Это основной инструмент для работы с табличными данными. Практически каждый анализ начинается с pandas.

import pandas as pd

# Загрузка данных
df = pd.read_csv('data.csv')
df = pd.read_sql('SELECT * FROM users', connection)

# Базовая разведка
print(df.info())  # типы и пропуски
print(df.describe())  # статистика

# Группировка и агрегация
df.groupby('month')['revenue'].sum()
df.pivot_table(values='sales', index='category', aggfunc='mean')

# Фильтрация
df[df['age'] > 18]
df.query('age > 18 and city == "Moscow"')

# Преобразования
df['revenue_per_item'] = df['revenue'] / df['items']
df['date'] = pd.to_datetime(df['date'])
Читать полностью ->
В каких ситуациях используешь SQL
1.0 Junior🔥 26💬 1

SQL: основной инструмент Data Analyst для анализа данных

SQL — это первый инструмент, к которому я обращаюсь при решении аналитических задач. За 10+ лет я нашёл оптимальный баланс между простотой, производительностью и масштабируемостью.

Основные сценарии применения SQL

1. Создание витрин и датасетов для аналитики

  • Построение таблиц для BI-инструментов (Tableau, Power BI, Looker)
  • Создание промежуточных слоёв в ETL pipeline
  • Подготовка данных для обучающих выборок ML моделей

2. Расчёт бизнес-метрик и KPI

  • DAU/MAU (Daily/Monthly Active Users)
  • Retention, Churn, LTV (Lifetime Value)
  • Revenue, ARPU, Conversion Rate
  • Эти расчёты часто исполняются по расписанию в Airflow

3. Исследовательский анализ данных (EDA)

  • Быстрые SELECT запросы для понимания распределения данных
  • Проверка качества данных и поиск аномалий
  • Выявление корреляций между переменными
Читать полностью ->
Что такое корреляция и причинно-следственная связь? Почему их нельзя путать?
1.2 Junior🔥 25💬 1

Корреляция vs Причинно-следственная связь

Корреляция — это статистическая зависимость (две переменные меняются вместе). Причинно-следственная связь (каузальность) — это когда одна переменная ПРИЧИНА, другая СЛЕДСТВИЕ. Это фундаментальное различие, которое часто путают, приводя к неверным выводам.

Определение корреляции

Корреляция измеряет, как две переменные двигаются вместе:

import numpy as np
import pandas as pd
from scipy.stats import pearsonr

# Пример: ледяное мороженое и утопления
ice_cream_sales = [100, 120, 150, 180, 200, 210, 190, 160, 130, 110]
drowing_deaths = [10, 12, 15, 18, 20, 21, 19, 16, 13, 11]

# Коэффициент корреляции Пирсона
corr, p_value = pearsonr(ice_cream_sales, drowning_deaths)

print(f"Корреляция: {corr:.3f}")  # 0.998 (очень сильная!)
print(f"P-value: {p_value:.6f}")  # < 0.001 (статистически значима)

# Вывод: ледяное мороженое и утопления сильно коррелируют!

Но это НЕ означает, что мороженое вызывает утопления!

Читать полностью ->
Как строить воронку конверсии и какие метрики на каждом этапе важны?
1.3 Junior🔥 25💬 1

Построение воронки конверсии: архитектура и метрики

Воронка конверсии — основной инструмент для понимания пути пользователя и выявления узких мест. Покажу как я её строю и анализирую.

1. Архитектура воронки

Классический путь e-commerce:

Пользователь посетил сайт
        ↓ (Landing Page View)
    100% (100k)
        ↓
Посмотрел каталог товаров
        ↓ (Category View)
    75% (75k) ← потеря 25%
        ↓
Добавил в корзину
        ↓ (Add to Cart)
    30% (30k) ← потеря 45% (!)
        ↓
Начал оформлять заказ
        ↓ (Checkout Started)
    25% (25k) ← потеря 5%
        ↓
Добавил способ оплаты
        ↓ (Payment Added)
    20% (20k) ← потеря 5% (!
        ↓
Завершил покупку
        ↓ (Order Completed)
    18% (18k) ← потеря 2% ← узкое место!

2. SQL для построения воронки

-- Метод 1: Event-based (рекомендуемый)
-- Считаю количество пользователей на каждом этапе
Читать полностью ->
С какими проблемами сталкивался на работе
1.0 Junior🔥 25💬 1

Реальные проблемы аналитика на работе и как я их решал

Я уверен, что интервьюер хочет услышать честный ответ. Идеальных ситуаций не бывает. Вот пять серьезных проблем, с которыми я сталкивался.

1. Грязные и неполные данные

Проблема: В CRM системе 40% записей о клиентах содержали ошибки:

  • Пустые email поля
  • Дубликаты (один клиент в базе дважды)
  • Несовместимые форматы (телефоны: "+7...", "8...", без страны)
  • Устаревшие данные (люди, которые удалили аккаунт 2 года назад, остались в базе)

Это сломало анализ LTV: было непонятно, кто реально платит, кто дублик.

Решение:

import pandas as pd
import numpy as np
from fuzzywuzzy import fuzz

# 1. Нормализация телефонов
def normalize_phone(phone):
    if pd.isna(phone):
        return None
    phone = ''.join(filter(str.isdigit, str(phone)))
    if len(phone) == 10:
        phone = '7' + phone  # Россия
    return phone if len(phone) == 11 else None

df['phone_normalized'] = df['phone'].apply(normalize_phone)
Читать полностью ->
Какие проверки выполняешь для данных?
1.0 Junior🔥 25💬 1

Проверки качества данных (Data Validation)

Качество данных — основание любого аналитического вывода. Я всегда следую принципу: "Не доверяй данным, пока не проверишь". Вот мой набор проверок, которые я выполняю для каждого датасета.

1. Проверки на полноту (Completeness)

Проблема: Пропущенные значения (NULL) могут исказить выводы.

-- Проверка: какой процент NULL в каждой колонке
SELECT 
    'users' as table_name,
    COUNT(*) as total_rows,
    COUNT(*) FILTER (WHERE id IS NULL) as null_id,
    COUNT(*) FILTER (WHERE email IS NULL) as null_email,
    COUNT(*) FILTER (WHERE created_at IS NULL) as null_created_at,
    COUNT(*) FILTER (WHERE name IS NULL) as null_name,
    ROUND(100.0 * COUNT(*) FILTER (WHERE email IS NULL) / NULLIF(COUNT(*), 0), 2) as null_email_pct,
    ROUND(100.0 * COUNT(*) FILTER (WHERE created_at IS NULL) / NULLIF(COUNT(*), 0), 2) as null_created_at_pct
FROM users;

-- Результат: если null_email_pct > 1%, это красный флаг
Читать полностью ->
Какие задачи решал на последнем месте работы?
1.0 Junior🔥 25💬 1

Задачи на последнем месте работы

На последней позиции Data Analyst я работал в быстрорастущей SaaS компании, где решал задачи по всему спектру аналитики: от создания дашбордов до A/B тестирования и статистического анализа. Вот основные проекты.

1. Создание системы мониторинга метрик (KPI Dashboard)

Задача: Руководство не видит в реальном времени состояние основных метрик продукта. Данные были разбросаны по разным инструментам (Google Analytics, Mixpanel, внутренней БД).

Решение:

  • Собрал все события в единую таблицу в PostgreSQL
  • Написал набор SQL запросов для расчёта ежедневных метрик
  • Создал дашборд в Metabase с KPI: DAU, MAU, Conversion, ARPU, Churn
  • Настроил автоматические алерты для критических метрик

Результат: Руководство получило единый источник истины. За 3 месяца выявили утечку в воронке, повысили conversion на 18%.

Читать полностью ->
Как работает идея статистического вывода?
2.2 Middle🔥 25💬 1

Статистический вывод: основы и применение

Статистический вывод — это методология, которая позволяет на основе выборки данных делать заключения о генеральной совокупности. Это фундаментальный инструмент для любого Data Analyst, поскольку мы редко можем собрать и проанализировать все возможные данные.

Основная идея

Представьте, что нужно узнать среднюю зарплату всех IT-специалистов в России. Невозможно опросить каждого, поэтому берём выборку из 1000 человек и на её основе оцениваем параметры генеральной совокупности.

Ключевые компоненты:

  • Генеральная совокупность — все объекты интереса (все IT-специалисты)
  • Выборка — часть совокупности для анализа (1000 человек)
  • Параметр — характеристика совокупности (средняя зарплата μ)
  • Статистика — характеристика выборки (средняя зарплата в выборке x̄)

Два основных подхода

1. Частотническое объяснение (Frequentist)

Предполагает, что параметр — неизвестная константа, выборка — случайная.

Читать полностью ->
Как правильно прерывать A/B тесты?
2.7 Senior🔥 25💬 1

Как правильно прерывать A/B тесты

Преждевременное прерывание A/B тестов — одна из самых распространённых ошибок аналитиков. Это приводит к ложным выводам и потере денег. Разберу правильный подход.

Основные принципы

Правило 1: Нельзя прерывать тест на основе промежуточных результатов

Это называется peeking problem или optional stopping problem. Когда вы подглядываете в результаты и принимаете решение, вы увеличиваете вероятность ошибки первого рода (false positive) с обещанных 5% до 25-30%.

Почему так происходит? Потому что случайные колебания в начале теста могут дать ложный сигнал о разнице. Если вы останавливаете тест, когда видите p-value < 0.05, вы ловите эти случайные колебания, а не реальный эффект.

Как правильно остановить тест

1. Установите размер выборки заранее

Используйте power analysis до теста:

from scipy.stats import norm
Читать полностью ->
В какой технической области хочешь развиваться
1.0 Junior🔥 25💬 1

В какой технической области хочу развиваться

После 10+ лет в аналитике я определил для себя ключные направления, которые наиболее интересны и перспективны:

1. Advanced SQL и оптимизация запросов

Глубокое понимание работы СУБД, индексации, плана выполнения запросов — это фундамент эффективной аналитики. Мне интересно:

  • Оптимизация сложных джойнов и агрегаций для работы с миллиардами строк
  • Оконные функции и CTE для решения нетривиальных задач
  • Статистика и план выполнения — почему базе нужно 30 секунд вместо 1 секунды

2. Data Engineering и инфраструктура данных

Переход от реактивной аналитики к построению систем, которые автоматически снабжают аналитиков качественными данными:

  • ETL/ELT пайплайны (Apache Airflow, dbt)
  • Data warehousing архитектура (звёзда, снежинка)
  • Data quality мониторинг и валидация
  • Streaming и real-time аналитика

3. Machine Learning и предиктивная аналитика

Читать полностью ->
Что такое стандартная ошибка среднего?
1.3 Junior🔥 25💬 1

Стандартная ошибка среднего (SEM)

Определение

Стандартная ошибка среднего показывает, насколько точно выборочное среднее оценивает истинное среднее генеральной совокупности.

Формула: SEM = σ / √n

Где σ — стандартное отклонение, n — размер выборки

Пример

Среднее время использования приложения = 50.4 минуты SEM = 1.08 минуты

Это означает: истинное среднее находится примерно в диапазоне 50.4 ± 1.08 минут.

SEM vs Стандартное отклонение

  • SD: Разброс отдельных значений
  • SEM: Точность среднего (зависит от SD и размера выборки)

Ключевое свойство

SEM уменьшается с √n:

  • n = 10: SEM = 1.48
  • n = 100: SEM = 0.47 (уменьшилась в √10 ≈ 3.16 раза)
  • n = 1000: SEM = 0.15 (уменьшилась в √10 раз ещё)

Вывод: Чтобы уменьшить SEM в 2 раза, увеличь n в 4 раза.

Применение

  1. Доверительные интервалы: CI = mean ± t * SEM
  2. A/B тесты: Оценка точности средних в каждой группе
  3. Научные отчёты: Показывают результаты как Mean ± SEM

Расчёт в Python

Читать полностью ->
Что такое p-value и как его интерпретировать?
1.0 Junior🔥 25💬 1

P-value и его интерпретация

Что такое p-value?

P-value — это вероятность получить наблюдаемый результат (или ещё более экстремальный) при условии, что нулевая гипотеза верна.

Формально: p-value = P(наблюдаемые данные | H0 верна)

Правильная интерпретация

✅ Правильно: "Если между группами нет разницы (H0 верна), вероятность увидеть такую разницу составляет 2%"

❌ Неправильно:

  • "p = 0.02 означает 98% вероятность того, что мой результат верен"
  • "p-value — это вероятность нулевой гипотезы"
  • "p = 0.02 означает, что эффект на 98% существует"

Порог значимости

Стандартный порог: α = 0.05 (5%)

  • Если p < 0.05 → отклоняем H0 (результат значим)
  • Если p ≥ 0.05 → не отклоняем H0 (недостаточно доказательств)

Пример: A/B тест платёжной страницы

import numpy as np
from scipy.stats import chi2_contingency

# Данные
control_purchases = 95  # из 1000
treatment_purchases = 115  # из 1000
Читать полностью ->
Как вы подходите к решению аналитических задач? Опишите процесс.?
2.3 Middle🔥 24💬 1

Мой подход к решению аналитических задач

За 10+ лет я выработал структурированный процесс, который помогает избежать ошибок и находить инсайты быстро. Вот он:

Фаза 1: Уточнение и понимание

Первый шаг — задать правильные вопросы:

  • Какова цель анализа? (увеличить доход, снизить cost, улучшить retention)
  • Кто потребитель результата? (CEO, product manager, marketing)
  • Какие метрики нужно отслеживать?
  • Какие ограничения и дедлайны?
  • Какие данные доступны и где они хранятся?

Почему это важно: 50% ошибок в аналитике происходят потому, что мы решаем не ту задачу. Иногда бизнес просит одно, а имеет в виду совсем другое.

Пример: Бизнес говорит: "Почему упал доход?" Но реально нужно понять, упал ли трафик, конверсия или средний чек.

Фаза 2: Формулировка гипотез

Не начинаю с данных. Сначала думаю, что могло произойти:

Читать полностью ->
Что такое Retention Rate и Churn Rate?
1.0 Junior🔥 24💬 1

Retention Rate и Churn Rate: Метрики Удержания

Retention Rate (коэффициент удержания) и Churn Rate (коэффициент оттока) — это две взаимодополняющие метрики, характеризующие способность компании удерживать пользователей или клиентов. Они критичны для оценки здоровья и прибыльности бизнеса.

Retention Rate (Коэффициент Удержания)

Retention Rate — это процент пользователей, которые остались активными после определённого периода времени. Высокий retention означает, что продукт хорошо удовлетворяет потребности пользователей.

Основная формула:

Retention Rate = (Пользователи на конец периода - Новые пользователи) / Пользователи на начало периода × 100%

SQL-запрос для расчёта Day-7 Retention (удержание через 7 дней):

Читать полностью ->
Что такое когортный анализ и для чего он используется?
2.2 Middle🔥 24💬 1

Когортный анализ: Определение и применение

Когортный анализ — это мощный аналитический метод, позволяющий сегментировать пользователей на основе общих характеристик или поведения в определённый период времени, а затем отслеживать и сравнивать их поведение на протяжении времени. Когорта — это группа пользователей или объектов, объединённых общим признаком.

Основные типы когорт

1. Когорты по времени регистрации (Acquisition Cohorts)

Пользователи группируются по месяцу/неделе/году первого визита или регистрации. Это наиболее распространённый тип когортного анализа.

2. Когорты по поведению (Behavioral Cohorts)

Пользователи сегментируются на основе совершённых действий: покупка определённого товара, использование конкретной функции, размер первого заказа.

3. Когорты по демографии (Demographic Cohorts)

Группировка по возрасту, геолокации, устройству (мобильный/десктоп), источнику трафика.

Для чего используется когортный анализ

Читать полностью ->
Что такое MAU, DAU и как их рассчитывать?
1.0 Junior🔥 24💬 1

MAU и DAU: Определения и Расчёты

MAU (Monthly Active Users) и DAU (Daily Active Users) — это ключевые метрики для оценки активности и размера пользовательской базы мобильных и веб-приложений. Они помогают понять, насколько активны пользователи и как растёт аудитория продукта.

DAU (Daily Active Users)

DAU — количество уникальных пользователей, которые совершили определённое действие (открыли приложение, совершили покупку, просмотрели контент) в течение одного календарного дня.

Как рассчитывать:

SELECT
    DATE(event_timestamp) as date,
    COUNT(DISTINCT user_id) as dau
FROM events
WHERE event_timestamp >= CURRENT_DATE - INTERVAL 30 day
GROUP BY DATE(event_timestamp)
ORDER BY date DESC;

Этот запрос считает уникальных пользователей за каждый день, используя COUNT(DISTINCT user_id). Важно использовать именно DISTINCT, чтобы один пользователь, совершивший несколько действий в день, считался один раз.

MAU (Monthly Active Users)

Читать полностью ->
Что такое оконная функция?
2.2 Middle🔥 24💬 1

Оконные функции (Window Functions) в SQL

Оконная функция — это функция, которая применяется к подмножеству (окну) строк, связанных с текущей строкой.

Просто говоря: это позволяет считать агрегаты (SUM, AVG, RANK) не сворачивая всю таблицу, а сохраняя детальность.

Простой пример

-- БЕЗ оконной функции
SELECT 
  employee_id,
  salary,
  (SELECT AVG(salary) FROM employees) as avg_salary  ← считаю среднее для всех
FROM employees;

-- С оконной функцией (НАМНОГО проще)
SELECT 
  employee_id,
  salary,
  AVG(salary) OVER() as avg_salary  ← автоматически
FROM employees;

Синтаксис

FUNCTION() OVER (
  [PARTITION BY column]  ← разбить на подгруппы
  [ORDER BY column]       ← порядок сортировки
  [ROWS BETWEEN ...]      ← диапазон окна
)

Типы оконных функций

1. Агрегатные функции

Читать полностью ->
Что такое HAVING?
1.3 Junior🔥 24💬 1

Что такое HAVING в SQL: полное руководство

HAVING — это один из самых неправильно понимаемых clauses в SQL. Многие путают его с WHERE. На самом деле, это разные инструменты с разными целями.

Основное определение

HAVING — это clause SQL, который фильтрует группы данных (результаты GROUP BY), а не отдельные строки. WHERE фильтрует строки перед группировкой, HAVING фильтрует группы после.

WHERE vs HAVING: ключевая разница

Порядок выполнения SQL запроса:

1. FROM — выбираем таблицы
2. WHERE — фильтруем строки (ПЕРЕД группировкой)
3. GROUP BY — группируем строки
4. HAVING — фильтруем группы (ПОСЛЕ группировки)
5. SELECT — выбираем колонки
6. ORDER BY — сортируем результат

Как запомнить: WHERE это фильтр на входе (строки), HAVING это фильтр на выходе (группы).

Пример 1: WHERE vs HAVING

Читать полностью ->
Что влияет на время выполнения запроса?
1.8 Middle🔥 24💬 1

Оптимизация SQL запросов: что влияет на скорость

Быстрые запросы — основа хорошей аналитики. Давайте разберёмся что замедляет запросы и как их ускорять.

1. Основные факторы, влияющие на скорость

Фактор 1: Размер данных (объём строк)

-- МЕДЛЕННО: Сканирую всю таблицу 10M строк
SELECT * FROM orders;
-- Время: 5 сек

-- БЫСТРО: Фильтрую по дате (partition pruning)
SELECT * FROM orders 
WHERE created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
-- Время: 0.2 сек (25x быстрее!)

Почему разница?

  • Первый запрос читает все 10M строк
  • Второй запрос использует partition pruning — читает только релевантные парты
  • В BigQuery/PostgreSQL с partition by date это критическая оптимизация

Фактор 2: Индексирование

-- БЕЗ индекса
CREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT,
  created_at TIMESTAMP,
  amount DECIMAL
);

SELECT * FROM orders WHERE user_id = 123;
-- Время: 3 сек (full table scan — смотрю все 10M строк)
Читать полностью ->
Какой research проводил на проекте?
1.2 Junior🔥 24💬 1

Research на проектах Data Analyst

В моей практике research — это не опциональное дополнение, а критическая часть работы аналитика. Вот несколько примеров исследований, которые привели к конкретным решениям.

Research 1: Анализ причин высокой стоимости привлечения пользователя (CAC)

Контекст: Маркетинг говорит, что CAC = $50 за нового пользователя. Это высоко. Нужно понять, почему.

Вопросы, которые я задал:

  1. Откуда приходит трафик? — Все ли каналы одинаково дорогие?
  2. Кто на самом деле конвертируется? — Может быть, мы платим за мусорный трафик?
  3. Какая средняя жизнь пользователя? — Может, они уходят в течение недели?

Результат анализа:

Читать полностью ->
Какие знаешь меры центральных тенденций?
1.2 Junior🔥 24💬 1

Меры центральных тенденций (Central Tendency)

Меры центральной тенденции — это статистические показатели, которые описывают центр распределения данных. Это фундаментальные инструменты для понимания любого датасета. Разберу все основные меры, их применение и различия.

1. Среднее арифметическое (Mean)

Определение: Сумма всех значений, разделённая на их количество.

Формула:

μ = (x₁ + x₂ + ... + xₙ) / n

Код:

import numpy as np
import pandas as pd

data = [10, 20, 30, 40, 50]
mean = np.mean(data)  # 30

# Или через pandas
df = pd.DataFrame({'values': data})
mean = df['values'].mean()  # 30

Свойства:

  • ✅ Использует все данные
  • ✅ Просто считать и интерпретировать
  • ❌ Очень чувствительно к выбросам (outliers)
  • ❌ Может не быть типичным значением (например, при асимметричных распределениях)

Когда использовать:

  • Нормальное распределение
  • Нет сильных выбросов
  • Примеры: средняя температура, средний доход в нормальной популяции
Читать полностью ->
Как улучшить качество данных?
2.0 Middle🔥 24💬 1

Стратегия улучшения качества данных

Что такое качество данных?

Качество данных — это комплексная характеристика, включающая:

  • Полноту — всех ли требуемых данных достаточно?
  • Точность — насколько данные соответствуют реальности?
  • Последовательность — одинаков ли формат и структура?
  • Своевременность — актуальны ли данные?
  • Достоверность — из надёжного ли источника данные?

Процесс улучшения качества

1. Аудит текущего состояния

Первый шаг — понять, где стоят проблемы:

-- Проверка полноты
SELECT 
    column_name,
    COUNT(*) as total,
    COUNT(DISTINCT column_name) as filled,
    ROUND(100.0 * COUNT(*) FILTER (WHERE column_name IS NULL) / COUNT(*), 2) as null_percent
FROM table_name
GROUP BY 1
HAVING COUNT(*) FILTER (WHERE column_name IS NULL) > 0;

-- Проверка уникальности
SELECT id, COUNT(*) as duplicates
FROM users
GROUP BY id
HAVING COUNT(*) > 1;
Читать полностью ->
Как решал проблемы на работе?
1.3 Junior🔥 24💬 1

Подход к решению проблем в Data Analytics

Философия решения проблем

В Data Analytics я применяю системный и структурированный подход, основанный на аналитическом мышлении. Проблемы в этой области обычно можно разбить на три категории: технические, данные и бизнес-логика. Каждая требует своей стратегии.

Этап 1: Определение и диагностика

Первое, что я делаю — это чётко определить проблему:

  1. Что именно сломалось? (ошибка, неправильные результаты, производительность)
  2. Когда это началось? (дата, событие, изменение)
  3. На какой слой системы это влияет? (БД, ETL, отчёты, бизнес-метрики)
  4. Какова срочность? (блокирует ли это работу?)

Пример из практики: когда дашборд показывал неправильные цифры, я не просто пересчитал метрики. Я:

  • Проверил исходные данные в базе
  • Отследил логику трансформации через SQL
  • Нашёл, что формула агрегации изменилась из-за нового поля в источнике

Этап 2: Анализ данных и логирование

Читать полностью ->
Как работать с датами в SQL (DATE_TRUNC, EXTRACT, INTERVAL)?
1.0 Junior🔥 23💬 1

Работа с датами в SQL

Даты — неотъемлемая часть аналитики. SQL предоставляет мощные функции для работы с временем: DATE_TRUNC для группировки, EXTRACT для выделения частей даты, INTERVAL для расчетов.

DATE_TRUNC — обрезание дат

FUNKCIYA DATE_TRUNC обрезает дату до указанной единицы времени (год, месяц, день, час и т.д.).

-- Обрезать до начала месяца
SELECT DATE_TRUNC('month', order_date) AS month_start
FROM orders;

-- Результат: 2024-01-01, 2024-02-01, 2024-03-01

-- Группировка продаж по месяцам
SELECT 
  DATE_TRUNC('month', order_date) AS month,
  COUNT(*) AS orders_count,
  SUM(amount) AS total_revenue
FROM orders
GROUP BY DATE_TRUNC('month', order_date)
ORDER BY month;

-- Группировка по неделям
SELECT 
  DATE_TRUNC('week', order_date) AS week_start,
  SUM(amount) AS weekly_revenue
FROM orders
GROUP BY DATE_TRUNC('week', order_date);

EXTRACT — извлечение части даты

EXTRACT выделяет конкретную часть даты: год, месяц, день, час, минуту и т.д.

Читать полностью ->
Что такое ROW_NUMBER, RANK и DENSE_RANK? В чём между ними разница?
2.0 Middle🔥 23💬 1

ROW_NUMBER, RANK и DENSE_RANK: Window Functions для Ранжирования

ROW_NUMBER, RANK и DENSE_RANK — это три различных способа ранжирования строк в SQL. Они работают как Window Functions и позволяют нумеровать, ранжировать или находить топ элементов. Различия между ними критичны для правильного анализа данных.

ROW_NUMBER — Последовательная Нумерация

Применяет уникальный номер каждой строке в порядке сортировки. Если есть дубликаты, они всё равно получают разные номера.

SELECT
    product_name,
    revenue,
    ROW_NUMBER() OVER (ORDER BY revenue DESC) as rank
FROM products;

Результат:

product_name | revenue | rank
---
Laptop       | 5000    | 1
Phone        | 5000    | 2      <- Один номер = одна строка
Tablet       | 3000    | 3
Watch        | 2000    | 4

RANK — Ранжирование с Пробелами

Применяет одинаковый ранг дубликатам, но пропускает следующие номера (создаёт пробелы).

Читать полностью ->
Что такое merge?
1.6 Junior🔥 23💬 1

pandas merge(): объединение DataFrame'ов

merge() — это функция для объединения (JOIN) двух DataFrame'ов по одной или нескольким колонкам. Это аналог SQL JOIN'а в pandas.

Что такое merge()?

# Основной синтаксис
pd.merge(df1, df2, on='key', how='inner')

# df1, df2 — DataFrame'ы которые объединяю
# on — колонка для связи
# how — тип JOIN'а

Простой пример:

import pandas as pd

users = pd.DataFrame({
    'user_id': [1, 2, 3],
    'name': ['Alice', 'Bob', 'Charlie']
})

orders = pd.DataFrame({
    'order_id': [101, 102, 103],
    'user_id': [1, 1, 2],
    'amount': [100, 200, 150]
})

# Объединяю по user_id
result = pd.merge(users, orders, on='user_id')

print(result)

Результат:

  user_id     name  order_id  amount
0        1    Alice       101     100
1        1    Alice       102     200
2        2      Bob       103     150

Типы merge (как SQL JOIN)

1. INNER JOIN (how='inner') — только совпадения

Читать полностью ->
Чем хотел бы заниматься?
1.0 Junior🔥 23💬 1

Чем я хотел бы заниматься

Эволюция моих интересов в аналитике

Я начинал с простых отчетов в Excel, но за 10+ лет понял, что меня по-настоящему зажигают два направления: Causal Inference и Product Analytics. Расскажу подробнее.

1. Causal Inference — понимание причин, а не корреляций

Почему это важно:

В обычной аналитике ты видишь корреляцию:

  • "Люди, которые открывают email, имеют выше LTV"
  • Вывод: нужно отправлять больше email

Но это может быть ложная корреляция!

  • Может быть, активные люди открывают email И имеют выше LTV независимо от email
  • Или email плохой, но мы отправляем только активным

Causal Inference позволяет:

# Вместо простой корреляции
corr = df['email_opens'].corr(df['ltv'])  # 0.45
# Мы вычисляем каузальный эффект

from econml.dml import DML
from sklearn.ensemble import RandomForestRegressor
Читать полностью ->
С какими командами работал
1.3 Junior🔥 23💬 1

Опыт работы в командах: структуры и коллаборация

За свою карьеру я работал с разными командами и типами организационных структур. Каждый опыт дал мне ценные навыки.

1. Ранний опыт: Стартап (20 человек)

Контекст: E-commerce платформа с нуля

Структура команды:

  • 3 backend разработчика
  • 2 frontend разработчика
  • 1 DevOps
  • 1 продакт менеджер
  • 1 я (единственный Data Analyst)
  • Остальные: дизайнеры, HR, операции

Мои задачи:

- Настройка event tracking (Mixpanel)
- Ежедневные метрики конверсии и LTV
- A/B тестирование new features
- Product insights для PM
- Прогнозирование revenue для CFO

Что научило:

  • Быстро адаптироваться к новому
  • Общаться с нетехническими stakeholders
  • Приоритизировать задачи (всё кажется срочным)
  • Автоматизировать рутину (я один на 20)

Ключевое достижение: Создал daily dashboard, который сэкономил 5 часов в неделю аналитики при росте из 100k до 1M DAU

2. Масштабирование: Mid-size Company (500 человек)

Читать полностью ->
С какими данными работал
1.0 Junior🔥 23💬 1

Типы данных в моей практике

Обзор: очень разнообразный опыт

За 10+ лет работал с практически всеми типами данных, которые встречаются в большом бизнесе. Расскажу про самые значимые проекты.

1. E-commerce данные

Масштаб: 50 млн+ транзакций в месяц

-- Основные таблицы
Orders (order_id, user_id, amount, status, created_at)
OrderItems (item_id, order_id, product_id, quantity, price)
Products (product_id, category, price, stock)
Users (user_id, email, country, signup_date)
Payments (payment_id, order_id, method, amount, status)

Задачи анализа:

  • RFM сегментация (Recency, Frequency, Monetary value)
  • Анализ конверсии по фаннелам
  • Когортный анализ (когда пользователи регистрируются, какой их lifecycle)
  • Выявление fraud через аномалии в платежах
  • Оптимизация цены через A/B тесты

Ключевые метрики:

  • CAC (Customer Acquisition Cost)
  • LTV (Lifetime Value)
  • Retention Rate по месяцам
  • AOV (Average Order Value)

2. СRM данные

Читать полностью ->
Какое минимальное и максимальное количество строк может быть после left join?
2.0 Middle🔥 23💬 1

Количество строк после LEFT JOIN: минимум и максимум

Основной принцип LEFT JOIN

LEFT JOIN сохраняет ВСЕ строки из левой таблицы и добавляет соответствующие строки из правой. Результат всегда >= количество строк в левой таблице.

Минимальное количество строк

Минимум = количество строк в левой таблице

Это происходит, когда:

  1. Правая таблица пуста
  2. Условие ON не находит совпадений (строки из левой таблицы остаются с NULL в полях из правой)
  3. Между таблицами нет дубликатов при объединении

Пример:

-- Левая таблица: 5 строк
SELECT * FROM users
-- id | name
-- 1  | Alice
-- 2  | Bob
-- 3  | Charlie
-- 4  | David
-- 5  | Eve

-- Правая таблица: 2 строки
SELECT * FROM orders
-- id | user_id | amount
-- 101| 1       | 100
-- 102| 2       | 200

-- LEFT JOIN: результат 5 строк (количество юзеров)
SELECT u.id, u.name, o.amount
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
Читать полностью ->
Какие методы решения проблемы несбалансированных выборок знаешь?
2.0 Middle🔥 23💬 1

Методы решения проблемы несбалансированных выборок

Несбалансированные выборки (imbalanced datasets) — это классическая проблема в машинном обучении и анализе данных, когда одна класс существенно преобладает над другой. Например, фрод встречается в 0.1% транзакций, а обычные операции в 99.9%. Это приводит к смещённым моделям. Разберу методы борьбы с этой проблемой.

1. Переsampling методы

Oversampling (Передискретизация меньшинства)

Идея: Увеличить количество примеров редкого класса путём дублирования или синтеза новых примеров.

from sklearn.utils import resample
import pandas as pd
import numpy as np

# Исходные данные
df = pd.DataFrame({
    'feature': np.random.randn(1000),
    'label': [0]*990 + [1]*10  # Несбалансированные
})

print(f"Исходное распределение: {df['label'].value_counts().to_dict()}")
# {0: 990, 1: 10}
Читать полностью ->
Какие интересные задачи решал?
1.6 Junior🔥 23💬 1

Интересные и нестандартные задачи в карьере

Сколько я работаю аналитиком, встречал задачи, которые выходили за рамки стандартных отчётов. Вот несколько, которые особенно запомнились.

Задача 1: Предсказание цены сделки через аналитику CRM

Контекст: В B2B компании нужно было понять, какой будет средний размер сделки на основе её характеристик на ранних стадиях, чтобы прогнозировать выручку точнее.

Проблема: Обычные подходы (средняя цена по отрасли) дают ошибку ±50%. Нужна была точная модель.

Решение:

Сначала я собрал признаки из CRM, которые могут влиять на цену сделки:

  • Размер компании (кол-во сотрудников)
  • Бюджет (указан в CRM)
  • Длительность sales cycle
  • Количество decision makers
  • Тип контракта (annual vs monthly)
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import StandardScaler
Читать полностью ->
Как ты решаешь связь многие ко многим?
2.0 Middle🔥 23💬 1

Решение связей многие-ко-многим (Many-to-Many)

Связь многие-ко-многим (M2M) — одна из самых сложных в работе Data Analyst при проектировании БД и анализе данных. Например, студенты могут изучать несколько курсов, а курсы могут быть у нескольких студентов. Решение этой проблемы зависит от контекста и инструментов.

1. Нормализация БД: Таблица соединения (Junction Table)

Это классический и правильный подход в реляционных БД:

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE courses (
    course_id INT PRIMARY KEY,
    course_name VARCHAR(100),
    duration_days INT
);

CREATE TABLE student_courses (
    student_id INT,
    course_id INT,
    enrollment_date DATE,
    completion_status VARCHAR(20),
    grade DECIMAL(3,2),
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES students(student_id),
    FOREIGN KEY (course_id) REFERENCES courses(course_id)
);
Читать полностью ->
В чём важность очистки данных?
1.0 Junior🔥 23💬 1

Важность очистки данных: фундамент качественной аналитики

Очистка данных (Data Cleaning) — это один из самых критичных и трудозатратных этапов аналитического проекта. Её значение часто недооценивают, хотя она определяет качество всех последующих выводов. Я посвящаю 30-40% своего времени именно этому процессу.

Определение

Очистка данных — это процесс обнаружения и исправления ошибок, пропусков, аномалий и несоответствий в данных перед анализом.

Классический парадокс данных:

80% времени аналитика: Очистка и подготовка данных
20% времени аналитика: Реальный анализ и моделирование

Почему очистка данных критична?

1. "Garbage In, Garbage Out" (GIGO) принцип

Если на входе грязные данные:

Грязные входные данные
          ↓
Любой анализ (правильный или нет)
          ↓
Грязные результаты и выводы

Пример:

Данные о доходах: [10000, 5000, 999999, 7500, -1000, NULL, 12000]
Читать полностью ->
Больше опыта в SQL или Python
1.0 Junior🔥 23💬 1

SQL vs Python: где больше опыта

Краткий ответ

Примерно поровну (50/50), но SQL глубже, Python шире.

Разбор по навыкам

SQL (Expert level, 10+ лет)

Что могу делать:

  • Complex queries: window functions, CTE, UNION, subqueries
  • Оптимизация: индексирование, анализ план выполнения, query tuning
  • Работа с JSON (jsonb в PostgreSQL)
  • Транзакции, блокировки, race conditions
  • Large-scale data: миллиарды строк

Примеры задач:

-- Когортный анализ с оконными функциями
SELECT 
    cohort,
    months_since_signup,
    100.0 * COUNT(*) / 
        LAG(COUNT(*)) OVER (PARTITION BY cohort ORDER BY months_since_signup) as retention_pct
FROM users
GROUP BY 1, 2;

Почему SQL: Основной инструмент для работы с данными. Быстрее, чем Python для больших объёмов. Source of truth.

Python (Advanced level, 8+ лет)

Читать полностью ->
Какие инструменты использовал?
1.6 Junior🔥 23💬 1

Инструменты в арсенале Data Analyst

1. SQL и базы данных

PostgreSQL / MySQL

Мой основной инструмент для работы с данными. Опыт:

  • Написание сложных запросов с оконными функциями, CTE, UNION
  • Оптимизация запросов через индексирование и анализ планов выполнения
  • Работа с JSON данными (jsonb в PostgreSQL)
  • Транзакции и управление блокировками

Пример использования: Переписал набор из 15 отчётов в единый параметризованный запрос, сократив время выполнения с 10 минут на ~20 секунд через правильное индексирование и CTE.

Redshift / Snowflake

Опыт работы с облачными DWH:

  • Распределённые запросы
  • Партиционирование и сортировка данных
  • Optimizing for MPP (massive parallel processing)
  • Work с S3 для загрузки/выгрузки

2. Python

Мой основной язык для аналитики:

Читать полностью ->
Как оценить статистическую значимость результата анализа?
2.0 Middle🔥 22💬 1

Оценка статистической значимости

Статистическая значимость — это мера того, насколько вероятно, что наблюдаемый результат произошёл не случайно, а отражает реальный эффект в данных. Это критическая концепция при выводах из выборки на всю генеральную совокупность.

Основные концепции

Нулевая и альтернативная гипотезы:

  • H0 (нулевая гипотеза): нет эффекта, наблюдаемая разница случайна
  • H1 (альтернативная гипотеза): есть реальный эффект

Пример:

  • H0: Средняя зарплата мужчин и женщин одинакова
  • H1: Зарплаты различаются

P-value (p-значение):

p-value — это вероятность получить наблюдаемый результат (или более экстремальный), если H0 верна.

# Пример p-value
# p-value = 0.03
# Интерпретация: если нет реального различия, 
# вероятность получить такую разницу случайно = 3%

Уровень значимости (α):

Это порог, ниже которого результат считается статистически значимым. Обычно α = 0.05 (5%).

Читать полностью ->
Что важно при выборе работы?
1.0 Junior🔥 22💬 1

Что важно при выборе работы аналитиком

После 10+ лет в этой сфере я понимаю, что выбор правильной компании и команды важнее, чем зарплата. Вот факторы, на которые я обращаю внимание.

1. Зрелость аналитической культуры компании

Красный флаг: компания говорит, что нужна аналитика, но:

  • Никто не смотрит отчеты
  • Решения принимаются gut-feeling, не на основе данных
  • Нет системы KPI
  • Аналитику платят меньше, чем разработчикам (показатель недооценки)

Зелёный флаг:

  • Есть аналитическая платформа (Tableau, Metabase, или свой инструмент)
  • Существуют OKR/KPI, которые трекируются
  • CEO смотрит дашборды и принимает решения на их основе
  • Аналитика встроена в процесс разработки (A/B тесты, impact анализ)
  • Данных-первый подход (data-first, не data-first-later)

Мой опыт: в компании, где я лучше всего работал, каждое совещание начиналось с дашборда. Это создавало контекст для обсуждения.

2. Качество данных и архитектура

Читать полностью ->
Какие слои данных есть в хранилище?
2.0 Middle🔥 22💬 1

Слои данных в хранилище (Data Warehouse Layers)

Данные в аналитическом хранилище организуются в слои для обеспечения качества, производительности и удобства анализа. Это одна из ключевых архитектурных концепций в аналитике данных. Разберу стандартные слои и их назначение.

Архитектура Data Warehouse (3-4 слойная архитектура)

┌─────────────────────────────────┐
│   Presentation Layer (Витрины)  │  <- Дашборды, отчёты, BI инструменты
├─────────────────────────────────┤
│  Mart Layer (Витрины данных)    │  <- Готовые таблицы для аналитики
├─────────────────────────────────┤
│  Core / Processing Layer        │  <- Преобразование и агрегация
├─────────────────────────────────┤
│  Staging Layer (Промежуточный)  │  <- Очистка и трансформация
├─────────────────────────────────┤
│  Raw / Source Layer             │  <- Исходные данные без обработки
├─────────────────────────────────┤
│  Source Systems (ERP, CRM, etc) │  <- Системы-источники
└─────────────────────────────────┘
Читать полностью ->
Какие ключевые показатели используют компании для анализа?
1.0 Junior🔥 22💬 1

Ключевые KPI (Key Performance Indicators) по сферам бизнеса

1. SaaS и подписные модели

Метрики роста

Monthly Recurring Revenue (MRR) — ежемесячный повторяющийся доход.

SELECT 
    DATE_TRUNC('month', created_at) as month,
    SUM(monthly_subscription_price) as MRR
FROM subscriptions
WHERE status = 'active'
GROUP BY 1
ORDER BY 1 DESC;

Annual Run Rate (ARR) — годовой прогноз дохода = MRR × 12.

Customer Acquisition Cost (CAC) — стоимость привлечения одного клиента. CAC = (Sales & Marketing costs) / (New customers acquired)

Customer Lifetime Value (CLV) — ожидаемый доход от клиента за всё время. CLV = (Average monthly revenue per user) × (Average customer lifetime in months)

Метрики удержания

Читать полностью ->
Какие задачи решал при помощи SQL?
1.0 Junior🔥 22💬 1

Примеры задач, решённых с помощью SQL

SQL — это мой основной инструмент. За 10+ лет я использовал его для решения сотен аналитических задач. Выберу несколько ярких примеров, которые показывают разные аспекты работы Data Analyst.

Задача 1: Анализ поведения пользователей (Cohort Analysis)

Контекст: Нужно было понять, какой процент пользователей, зарегистрировавшихся в разные месяцы, совершил покупку через N дней.

Читать полностью ->