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

DWH, или Data Warehouse, — хранилище данных для аналитики. В него регулярно поступают данные из рабочих систем, файлов и внешних сервисов.
Обычная база приложения помогает проводить операции: создать заказ, изменить статус, записать оплату. Хранилище помогает анализировать историю: сравнить годы, связать источники, посчитать показатели и построить отчёты.
Это разные задачи. Заставлять рабочую CRM одновременно обслуживать менеджеров и тяжёлую аналитику — всё равно что проводить совещание прямо у кассы. Технически возможно, атмосфера спорная.
Как работает хранилище данных

Данные проходят несколько понятных шагов:
- источники отдают записи через API, выгрузки или подключение к базе;
- ETL или ELT загружает и преобразует данные;
- справочники и правила связывают клиентов, товары, каналы и даты;
- аналитический слой готовит таблицы для отчётов;
- BI-система показывает показатели пользователям.
Во многих архитектурах сохраняют сырой слой, очищенный слой и готовые витрины. Названия могут отличаться. Смысл один: не смешивать исходные данные, техническую обработку и бизнес-показатели.
Зачем DWH бизнесу
- связать рекламу, продажи, оплаты и расходы;
- хранить историю после изменений в рабочих системах;
- считать показатели по одним правилам;
- обновлять отчёты без ручного копирования;
- не перегружать CRM и учётные базы сложными запросами.
Но DWH не исправляет смысл автоматически. Если никто не договорился, что такое «новый клиент», хранилище бережно сохранит несколько версий ответа.
Когда хранилище уже полезно
Оно становится оправданным, когда источников несколько, история важна, отчёты обновляются регулярно, а правила показателей должны быть общими для разных команд.
Если задача маленькая и данные помещаются в одну надёжную таблицу, начинать с большого DWH необязательно. Архитектура должна расти из вопроса бизнеса, а не из желания произнести больше английских букв.
Начните с уровня одной строки
Перед созданием таблицы ответьте: что означает одна строка? Один заказ, одна позиция заказа, одна оплата, один клиент на дату?
Если в одной таблице смешать заказ и его позиции, сумма заказа повторится несколько раз. Если смешать текущий статус клиента с историей, прошлые отчёты начнут меняться задним числом.
Такой уровень детализации называют гранулярностью. Слово сложное, вопрос простой: «Что именно лежит в одной строке?» Я задаю его до первой схемы.
Зачем разделять слои
Сырой слой хранит данные почти как пришли из источника. Очищенный слой приводит типы, ключи и справочники к общему виду. Витрины собирают понятные таблицы под продажи, маркетинг или финансы.
Это разделение помогает найти ошибку. Если сумма не сходится, можно пройти назад: витрина → очищенная запись → исходный ответ системы. Без слоёв исправление одного отчёта легко ломает другой.
Как выглядит минимальный полезный DWH
Для первого управленческого отчёта часто достаточно нескольких сущностей: календарь, клиенты, сделки или заказы, оплаты, рекламные расходы и справочники продуктов и каналов.
Сначала собираем одну цепочку до денег. Например: расход → заявка → сделка → оплата → маржа. Сверяем итог с CRM, банком и финансовым учётом. Только после этого добавляем новые области.
Так первый результат появляется раньше, а архитектура проверяется на реальной задаче. Огромная модель «на все будущие случаи» обычно дольше ждёт своего первого пользователя.
Кто отвечает за смысл и доступ
DWH — не только серверы. У показателей должны быть владельцы, у справочников — правила обновления, у пользователей — подходящие права.
- маркетологу не обязательно видеть персональные данные клиента;
- финансовые поля доступны ограниченному кругу;
- изменения формул фиксируются и проверяются;
- удаление и срок хранения соответствуют правилам компании.
Одна копия правды не означает, что каждому открывают всю правду целиком.
Как принять хранилище
- Сверить контрольные суммы с источниками.
- Пройти несколько реальных записей от отчёта до исходной системы.
- Проверить повторную загрузку без дублей.
- Сымитировать опоздание или сбой источника.
- Измерить время обновления и стоимость хранения.
- Убедиться, что формулы показателей описаны обычными словами.
Хранилище готово не тогда, когда создано много таблиц, а когда нужный отчёт обновляется, сходится и объясняется.
Как устроить понятную аналитическую модель
В центре обычно находятся события: продажи, оплаты, расходы, обращения. Рядом — справочники клиентов, продуктов, каналов и календаря. Такая структура помогает одной формулой считать показатель по разным срезам.
Например, строка продажи хранит сумму и ссылки на клиента, продукт и дату. Название региона или категории берётся из справочника. Если положить все описания в каждую строку, появятся дубли и несколько вариантов одного значения.
Для пользователя это означает простую вещь: фильтр «канал» одинаково работает в выручке, марже и заказах, потому что использует общий справочник.
Пример истории клиента
Клиент в январе относился к малому бизнесу, а в июле перешёл в средний сегмент. Если хранить только текущее значение, январский отчёт задним числом изменится.
Для исторического анализа сохраняют период действия версии: с какой даты значение действительно и когда перестало действовать. Тогда продажи января остаются в старом сегменте, а июльские — в новом.
Такую историю стоит включать там, где она влияет на решения. Версионировать цвет кнопки в CRM обычно не требуется.
Как контролировать стоимость DWH
Стоимость складывается из хранения, вычислений, передачи данных, инструментов и поддержки. Частое обновление и тяжёлые запросы могут стоить дороже самой полезной витрины.
Начните с понятного бюджета и измеряйте, какие таблицы и процессы создают основную нагрузку. Старые сырые данные можно хранить дешевле, а готовые витрины — обновлять только с нужной частотой.
Порядок внедрения
- Выбрать один управленческий вопрос и владельца результата.
- Описать показатели, источники и уровень строк.
- Загрузить сырой слой и настроить контроль.
- Собрать очищенные сущности и справочники.
- Создать одну витрину и сверить с источниками.
- Подключить отчёт, пользователей и мониторинг.
- Только после приёмки расширять охват.
Так DWH растёт от работающей задачи, а не от списка всех таблиц компании.
Пример витрины для продаж
Допустим, собственнику нужен отчёт по выручке, марже и повторным продажам. В витрине одна строка может соответствовать позиции заказа. В ней хранятся дата, клиент, товар, менеджер, канал, количество, выручка, переменные расходы и маржа.
Справочники отдельно описывают клиента, продукт и сотрудника. Тогда один и тот же факт можно посмотреть по месяцу, категории или менеджеру без трёх разных таблиц с тремя итогами.
Перед запуском я сверяю условный контрольный месяц: число заказов, общую выручку и маржу с исходной системой. Затем беру несколько заказов и прохожу до первичного документа. Если итог совпал, но отдельную строку объяснить нельзя, витрина ещё не принята.
Как хранить изменения справочников
Клиент может перейти в другой сегмент, менеджер — в другой отдел, товар — в другую категорию. Нужно решить: старый отчёт должен показывать прежнее состояние или сегодняшнюю классификацию?
Например, клиент в январе был малым бизнесом, а в июле стал средним. Для анализа исторических продаж часто важно сохранить январский сегмент. Тогда в справочнике хранят периоды действия версии записи. Если нужен только текущий взгляд, достаточно обновлять значение.
Главное — принять правило заранее. Иначе отчёт за прошлый год начнёт меняться вслед за сегодняшними справочниками, и команда снова пойдёт искать старый Excel.
Своё решение или готовая платформа
Выбор зависит не от моды, а от источников, объёма, команды и требований к доступу. Готовая платформа быстрее запускается и берёт часть обслуживания на себя. Собственная инфраструктура даёт больше контроля, но требует людей для обновлений, резервного копирования и наблюдения.
Сравнивайте полную стоимость: лицензии, вычисления, хранение, разработку, поддержку и время пользователей. Малому проекту не нужен космодром. Но если отчёты критичны и источников десятки, экономия на наблюдении быстро перестаёт быть экономией.
Резервное копирование и восстановление
Наличие копии ещё не означает, что из неё можно восстановиться. Для критичных данных задайте допустимую потерю по времени и максимальный срок возврата системы в работу.
Периодически проводите тест восстановления на отдельном контуре: поднимите данные, сверите контрольные суммы и откройте ключевой отчёт. Такой тест скучнее нового графика, зато очень убедителен в нужный день.
Когда отчёт стал медленным
Сначала измерьте: какой запрос, какой период и какой объём занимают время. Затем проверьте модель, фильтры, повторные расчёты и частоту обновления. Часто помогает готовая агрегированная витрина для типового отчёта вместо чтения всех операций каждый раз.
Не ускоряйте всё хранилище сразу. Выберите важный пользовательский сценарий и поставьте понятную цель: например, первый экран открывается меньше чем за несколько секунд на рабочем объёме. Потом проверьте результат тем же тестом.
Как мы подходим к DWH в работе
Я начинаю не со схемы серверов, а с отчёта, который сейчас нужен собственнику. Определяем показатели, источники и путь ключевых записей.
Затем собираем минимальный слой: клиенты, сделки, оплаты, расходы и справочники. Сверяем результат с первичными системами. Только потом добавляем новые области.
Маркетинг получает экономику каналов, продажи — согласованную воронку, финансы — связь оплат и отчётов. Собственник видит одну картину, где можно дойти от итоговой цифры до исходной операции.
Если отчёты уже упираются в десятки источников и ручные склейки, можно спроектировать первый полезный слой DWH. Кнопка ниже — чтобы обсудить его со мной.






