Хранилище данных (Data Warehouse, DWH) - это специализированная централизованная база данных, которая создается отдельно от рабочих учетных систем, чтобы сложные аналитические расчеты не замедляли ежедневную работу компании. По классическому определению родоначальника этой концепции Билла Инмона, хранилище данных предназначено для поддержки принятия управленческих решений и обладает четырьмя обязательными свойствами: оно является предметно-ориентированным (данные сгруппированы вокруг ключевых бизнес-сущностей - продаж, клиентов, финансов, а не вокруг конкретных программ), интегрированным (информация из разных систем приведена к единому формату и справочникам), привязанным ко времени (хранит глубокую историю показателей за несколько лет с четкой фиксацией дат) и неизменяемым (попавшие в хранилище исторические данные не перезаписываются и не удаляются, а только дополняются новыми срезами).

В основе проектирования аналитических хранилищ лежит многомерное моделирование (подход Ральфа Кимбалла), которое делит все таблицы на два взаимосвязанных типа:

В зависимости от того, как таблицы фактов и измерений связаны между собой, выделяют две основные схемы организации хранилища данных:

Наполнение хранилища информацией из разрозненных рабочих систем происходит с помощью регулярного автоматизированного конвейера ETL, состоящего из трех последовательных этапов:

  1. Extract (Извлечение) - подключение к первичным источникам и чтение «сырых» данных из систем ERP и CRM, бухгалтерских баз, таблиц Excel, веб-логов или внешних API-сервисов. Извлечение обычно настраивается по расписанию (например, ночью) или забирает только изменения за день, чтобы не перегружать рабочие серверы.
  2. Transform (Преобразование) - самый трудоемкий этап, на котором данные в промежуточной области приводятся в порядок перед анализом. Здесь происходит очистка от пустых значений (NULL), опечаток и дубликатов, приведение дат, валют и типов данных к единому стандарту, расчет новых производных столбцов (например, чистой маржи или НДС), а также замена внутренних бизнес-ключей из разных систем на единые суррогатные ключи (числовые идентификаторы самого хранилища).
  3. Load (Загрузка) - финальная запись очищенных, проверенных и структурированных данных в целевые таблицы хранилища (в схему «Звезда» или «Снежинка») либо в специализированные тематические витрины данных (Data Marts), откуда их сразу могут забирать системы бизнес-аналитики (BI) и СППР для построения отчетов и дашбордов.