Выручка в CRM не равна выручке в 1С
Сделка закрыта в CRM, но счёт не оплачен; в 1С есть отгрузка, которой нет в CRM. Каждый отчёт считает по своему источнику, и на совещании обсуждают не решение, а расхождение в 12%.
Выберите тему — соберём контекст
Проектируем модель данных, собираем источники в один контур и отдаём бизнесу витрины, где выручка, клиенты и запасы считаются одинаково — и в дашборде, и в выгрузке для бухгалтерии.
Или сразу: +7 (962) 368-39-51 Telegram
Данные есть в каждой системе по отдельности. Проблема начинается там, где их нужно свести в одну цифру.
Сделка закрыта в CRM, но счёт не оплачен; в 1С есть отгрузка, которой нет в CRM. Каждый отчёт считает по своему источнику, и на совещании обсуждают не решение, а расхождение в 12%.
Аналитик каждую неделю собирает отчёт вручную из выгрузок, копирует формулы и правит числа. Ошибка в одной ячейке живёт в отчёте месяцами, а восстановить логику расчёта по файлу невозможно.
Аналитический запрос с агрегацией по всей истории выполняется поверх операционной базы и блокирует таблицы. Продажи ждут, пока маркетинг считает воронку за три года.
Менеджер переименовал клиента, категорию товара перевели в другую группу, а регион у поставщика указали заново. Старые отчёты при этом меняют прошлые цифры, и отчётность перестаёт быть воспроизводимой.
Показатель на дашборде расходится с ожиданием руководителя, и никто не может объяснить путь от исходной записи до готового числа. На разбор уходит день работы аналитика.
Таблица событий перевалила за сто миллионов строк, и прежние запросы стали занимать минуты. Выборки по сырым таблицам без партиционирования и агрегатов дальше не масштабируются.
Работу можно начать с одного домена — например, продажи и клиенты — и расширять по мере пользы.
Проектируем структуру, в которой каждая таблица имеет одну ответственность и предсказуемую гранулярность.
Выбираем движок под характер запросов и объём данных, а не под привычку команды.
Наполняем хранилище предсказуемо и превращаем его в готовые наборы данных для отчётов и моделей.
Хранилище — это система, которая работает годами, поэтому отдельно занимаемся её обслуживанием.
Идём итерациями: после каждого этапа у бизнеса появляется рабочий отчёт, а не только архитектурная схема.
Разбираем системы, ключи, справочники и расхождения в цифрах. Собираем список показателей с определениями и владельцами.
Проектируем слои и согласуем модель данных. Поднимаем загрузку двух-трёх ключевых источников и собираем первую витрину.
Подключаем остальные источники, переносим расчёты из Excel, выводим витрины под отчётность и модели, ставим тесты качества данных.
Документируем модель и регламенты, обучаем аналитиков, передаём дежурство по загрузкам или берём поддержку на себя.
Слои разделяют ответственность и делают систему поддерживаемой. В raw данные лежат ровно в том виде, в каком пришли из источника: это точка восстановления, позволяющая пересобрать всё дальше без повторной выгрузки. В core данные очищены, приведены к единым ключам и обогащены историчностью. В mart лежат уже узкие витрины под конкретную задачу — отчёт по продажам, воронка маркетинга, взаиморасчёты.
Такое разделение экономит месяцы работы. Когда в источнике меняется поле или обнаруживается ошибка в расчёте, пересобирается нужный слой, а не вся аналитика. Кроме того, на каждом слое можно поставить свои тесты качества и понять, где именно испортились данные, — на входе или в преобразовании.
PostgreSQL удобен как ядро хранилища: строгая схема, транзакции, привычный SQL, развитые средства разграничения доступа. Он хорошо держит десятки миллионов строк и сложные соединения, если запросы типовые, а не аналитические «на всю историю».
ClickHouse выигрывает там, где нужны агрегаты по сотням миллионов событий за секунды: логи, показы, клики, статусы заказов, телеметрия. Колоночное хранение, партиционирование по дате и материализованные представления дают скорость, недостижимую в построчных СУБД, но требуют аккуратности в проектировании ключей сортировки. На практике эти системы часто работают вместе: PostgreSQL отвечает за ядро и справочники, ClickHouse — за событийные витрины и тяжёлые агрегаты.
Есть несколько объективных признаков. Бизнес перестал спорить о цифрах: расхождения если и возникают, то разбираются по конкретной записи, а не по всему отчёту. Аналитик тратит время на разбор задач, а не на сборку выгрузок: девять из десяти вопросов закрываются готовой витриной. Отчёт за прошлый месяц можно воспроизвести через полгода и получить ту же цифру.
Технически это означает, что загрузки проходят по расписанию с алертами, тесты качества данных настроены на ключевые таблицы, у моделей есть описание и владелец, а изменение в источнике не приводит к тихой порче данных в витрине. Именно эти свойства мы считаем критерием сдачи проекта, а не факт наличия схемы в документации.
Часто достаточно облегчённого варианта: PostgreSQL, несколько витрин и dbt-модели поверх двух-трёх источников. Такой контур обходится без отдельного кластера и решает главную проблему — расхождение цифр между системами. Тяжёлые решения вроде ClickHouse или озера данных подключаем позже, когда появляется реальный объём событий.
Первая витрина по двум-трём источникам появляется через две-четыре недели после аудита данных. Полный контур с историчностью, тестами качества и основными доменами — от двух до четырёх месяцев. Срок определяется не технологией, а количеством источников и качеством ключей в них: интеграция с 1С и разбор справочников обычно занимают больше времени, чем настройка самого хранилища.
Мы не ломаем привычный процесс сразу. Сначала воспроизводим самые нагруженные отчёты в витринах и сверяем результаты с текущими файлами — расхождения разбираем как ошибки в данных или логике. Когда отчёт из хранилища совпадает и обновляется сам, файл выводим из обращения. Так переход проходит без остановки отчётности.
Хранилище — это фундамент: BI-системы, прогнозные модели и операционные алерты читают одни и те же витрины. Поэтому определения метрик задаются один раз на уровне модели данных, а не переписываются в каждом дашборде. Если позже добавляется новый инструмент визуализации или модель, она подключается к готовому слою и сразу использует согласованные цифры.
Смежные задачи, которые обычно решаются в одном проекте с этой.
Пришлите список систем и показателей, которые расходятся, — предложим архитектуру и план первого этапа.
Cookie и аналитика
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie (Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия — от него можно отказаться. Подробнее: Политика использования cookie и обработка персональных данных.