Урок 23 · 9 мин чтения

Новые и вернувшиеся клиенты

Кто купил впервые, а кто вернулся — паттерн для оценки притока и удержания. Логика на сравнении с первой покупкой.

«Выручка выросла» — но за счёт чего: пришли новые клиенты или вернулись старые? Это разные истории (привлечение vs удержание), и считаются они отдельным паттерном. Разбираем по DAX Patterns SQLBI.

На каком примере

В учебном наборе нет таблицы клиентов, поэтому примеры — на типовой рознице: факт Продажи с КодКлиента и справочник Клиенты. Логика универсальна.

Определения

  • Новый клиент в периоде — тот, чья первая в истории покупка попала в этот период.
  • Вернувшийся — покупал в периоде, но первая покупка была раньше.
  • (Иногда добавляют потерянных — покупали раньше, в периоде нет.)

Ключ ко всему — дата первой покупки каждого клиента.

Мера новых клиентов

Идея: клиент новый, если его первая покупка за всю историю лежит внутри текущего периода.

Новые клиенты =
VAR _Период = VALUES ( Календарь[Дата] )
RETURN
    COUNTROWS (
        FILTER (
            VALUES ( Клиенты[КодКлиента] ),
            VAR _ПерваяПокупка =
                CALCULATE ( MIN ( Продажи[Дата] ), ALL ( Календарь ) )
            RETURN
                _ПерваяПокупка IN _Период
        )
    )

Для каждого клиента берём его первую покупку за всю историю (ALL(Календарь) снимает фильтр периода), и считаем клиента новым, если эта дата попадает в текущий период.

Вернувшиеся — через разницу

Вернувшиеся = все активные в периоде минус новые:

Активные клиенты = DISTINCTCOUNT ( Продажи[КодКлиента] )

Вернувшиеся клиенты = [Активные клиенты] - [Новые клиенты]

Просто и надёжно: кто покупал в периоде, но не новый, — значит вернулся.

Сердце паттерна

Всё держится на «первой покупке за всю историю». CALCULATE ( MIN(Дата), ALL(Календарь) ) даёт дату первого заказа клиента независимо от выбранного периода — а дальше сравниваем её с текущим окном.

Тонкости

  • Окно «новизны». «Новый за месяц» и «новый за год» — разные меры; решите гранулярность.
  • Производительность. Перебор клиентов с MIN по каждому — дорого на больших базах; на проде оптимизируют через предрасчёт даты первой покупки (расчётный столбец в Клиенты).
  • Граница периода. Аккуратно с ALL(Календарь) — он должен снимать только фильтр дат, не трогая другие срезы (регион, канал).
Не считайте «нового» по первой покупке в периоде

Частая ошибка: «новый = первая покупка в этом месяце среди покупок этого месяца». Так любой активный окажется новым. Новизна — относительно всей истории, поэтому и нужен ALL(Календарь).

Зачем бизнесу

Разделение притока и удержания меняет решения: растёт за счёт новых — вопрос к привлечению и удержанию (удержим ли?); растёт за счёт вернувшихся — здоровая лояльная база. Связка с LFL (сопоставимые продажи) и когортным анализом даёт полную картину динамики клиентов.

Что дальше

Приток и возврат разобрали. Дальше — третья сторона клиентской динамики: удержание и когортный анализ (сколько из пришедших осталось). Следующий урок.

Как корректно определить «нового» клиента в периоде?
Новизна — относительно всей истории. Берём дату первой покупки клиента без фильтра периода (ALL(Календарь)) и проверяем, попадает ли она в текущее окно. Иначе любой активный клиент ошибочно станет «новым».
Прогресс сохраняется в вашем браузере.
§ Power BI под ключ

Нужно внедрить
это в компании?

Соберём DWH, модель и дашборды под ваши данные. Бесплатная консультация — 30 минут.

Телефон+7 918 042 34 43