Введение
OLAP-куб (Online Analytical Processing Cube) – многомерная структура данных, предназначенная для быстрого выполнения аналитических запросов с агрегацией по нескольким измерениям одновременно. Термин «куб» метафоричен: реальные OLAP-структуры – гиперкубы, содержащие не 3, а десятки измерений.
В каждой ячейке куба хранится числовой показатель (мера): выручка, количество, средний чек. По осям куба расположены измерения: время, регион, продукт, канал продаж, клиентский сегмент. Пользователь выбирает срез куба (slice), и система мгновенно возвращает агрегат – без сканирования исходных таблиц транзакций.
История и контекст
Концепцию OLAP и «куба» популяризировал Е. Ф. Кодд (создатель реляционной модели) в статье для Computerworld (1993), сформулировав 12 правил OLAP. Первыми реализациями стали Essbase (Arbor Software, 1992) и Express (IRI Software/Oracle). Microsoft Analysis Services (1998) сделал OLAP-кубы массовым инструментом в связке с Excel PivotTable.
В 2000-х сформировались три архитектуры хранения: MOLAP (физическое многомерное хранилище), ROLAP (реляционное хранилище с MDX→SQL трансляцией), HOLAP (гибрид). С распространением колоночных СУБД (ClickHouse, Redshift) ROLAP-подход получил новый импульс – быстрые запросы на «сыром» реляционном хранилище без физической агрегации.
Как это работает
Структура OLAP-куба:
- Меры (Measures) – числовые показатели: выручка, количество, маржа. Агрегируются по измерениям через SUM, AVG, COUNT, MAX, MIN или кастомные функции MDX.
- Измерения (Dimensions) – атрибуты для группировки: время, продукт, регион, клиент. Каждое измерение содержит иерархии уровней.
- Иерархии – структуры уровней внутри измерения: год → квартал → месяц → день; страна → федеральный округ → регион → город.
- Агрегаты – предвычисленные суммы по всем комбинациям уровней иерархий. Обеспечивают мгновенный ответ без сканирования фактов.
Основные OLAP-операции:
- Slice – выбор одного значения по измерению (только 2024 год).
- Dice – выбор диапазона по нескольким измерениям.
- Drill-down – переход к более детальному уровню иерархии.
- Drill-up (Roll-up) – переход к более высокому уровню агрегации.
- Pivot – перестановка измерений по осям.
- Drill-through – переход к детальным строкам фактической таблицы.
Где применяется
- Финансовая отчётность: анализ P&L по периодам, подразделениям и статьям затрат.
- Ритейл: анализ продаж по SKU, магазинам, периодам с drill-down до конкретной транзакции.
- Банки: анализ кредитного портфеля по продуктам, регионам, сегментам клиентов.
- Производство: анализ себестоимости по статьям, подразделениям, продуктам.
- HR: анализ ФОТ и численности по подразделениям, должностям, регионам.
Преимущества и ограничения
Преимущества: мгновенная скорость ответа на аналитические запросы (миллисекунды) за счёт предвычисленных агрегатов; интуитивная многомерная навигация; поддержка сложных MDX-вычислений (WTD, YTD, скользящие средние).
Ограничения: MOLAP-кубы требуют времени на пересчёт при обновлении данных (processing time); экспоненциальный рост объёма предвычисленных агрегатов при большом числе измерений (combinatorial explosion); современные колоночные СУБД часто делают физический куб излишним.
Связь с другими понятиями
Витрина данных – источник данных для OLAP-куба в архитектуре ROLAP. Drill-down, drill-up, drill-through – базовые операции навигации по OLAP-кубу. Сводная таблица (Pivot Table) – пользовательский интерфейс для работы с OLAP-данными. Семантический слой – современная альтернатива физическому OLAP-кубу для многомерного анализа. MDX – язык запросов к OLAP-кубам.