Многомерная модель данных: OLAP-куб
Куб данных, показатели и ячейки
OLAP-куб — это многомерная модель представления данных внутри
хранилища. Он хранит совокупность данных, которая образуется для любого
сочетания измерений (dimension) с фактами. Для каждой даты,
сотрудника, департамента и другого разреза хранится значение,
соответствующее данному набору измерений. Например, в продажах: в этот
день этот сотрудник сделал такие-то продажи.
Для каждой комбинации обычно хранится числовое значение — итог
вычисления транзакции. Поскольку готовые измерения и
центральная таблица фактов (fact table) уже есть, не нужно склеивать
нормализованные таблицы. Поэтому сбор информации идёт быстро.
Можно указать диапазон: с такой-то по такую-то дату для таких-то
департаментов — и получить итог продаж. Пример куба: первое измерение
— товар (Волга, Жигули, Москвич), второе — продавцы (Яковлев,
Смирнов, Петров), третье — годы (1994, 1995, 1996). Ячейка с цифрой 4
в правом нижнем углу соответствует продаже товара «Москвич» продавцом
Яковлевым в 1994 году. В ячейке хранится число — объём продаж. Если
таблица фактов содержит несколько показателей, в ячейке будет несколько
значений, по одному на каждый показатель (measure).
Срезы и агрегаты
Можно взять несколько лет, например 1994 и 1995, — это сечение куба в
форме грани, или срез (slice). Чтобы посчитать продажи по всем
товарам за 1994–1995 для продавца Петрова, нужно сложить шесть ячеек.
Для показателя «объём продаж» применяется суммирование, но это не
обязательно для всех показателей. Например, средние продажи за два года
для консультанта Петрова тоже осмысленны. Поэтому для одних показателей
используется сумма, для других — среднее.
Суммируя значения в ячейках куба, получают информацию для анализа. Можно
получать разные срезы: двумерные — например, для 1994 года и продавца
Петрова; срез по товару «Жигули» за три года — это девять ячеек (3 ×
3). Если измерений больше трёх, куб отображают через подтаблицы.
Агрегат (aggregate) — действие над показателем, когда указывается
промежуток или не указывается одно из измерений. Агрегационная функция
сводит множество значений к одному: сумма, среднее или другой принцип.
Если измерение не указано, получаем множество значений по всей этой
размерности. Если указан диапазон, например по времени, для каждого
элемента диапазона есть значение, и агрегат превращает цепочку в одно
значение.
Правило агрегата задаётся заранее для каждой размерности: если одна
размерность не указана — считать сумму, если другая — среднее, и так
далее. Внутренние механизмы OLAP-куба предварительно рассчитывают
возможные комбинации, поэтому аналитический запрос выполняется быстрее,
чем поэлементная выборка с ручным суммированием. Это уменьшает время
отклика.
Измерения, члены и иерархии
Измерения (dimension) — рёбра куба, вдоль которых анализируется
показатель. Они играют роль индексов для идентификации ячейки. Чтобы
получить однозначное значение, нужно указать каждое измерение: год,
марку автомобиля и сотрудника. Если не указать сотрудника, получим сумму
продаж для данного года и марки по всем продавцам. Что именно считать
— сумму или среднее — определяется аналитической бизнес-задачей.
Измерения могут иметь иерархию. Во времени: дни складываются в месяцы,
месяцы — в годы; возможны кварталы и полугодия. В сотрудниках:
сотрудник работает в отделе, отдел входит в департамент. Объекты
измерения называются членами измерений (member): конкретная дата,
год, июнь 2016 года, сотрудник. Измерение может быть простым или иметь
сложную иерархию. Итоговая ячейка (cell) содержит значение
показателя для данного набора измерений.
Коллективные и частные измерения
Таблиц фактов может быть несколько, и кубов тоже может быть много.
Показателей в одной таблице фактов также может быть несколько.
Измерения, которые участвуют в нескольких таблицах фактов,
называются коллективными. Если измерение участвует не во всех
таблицах фактов, оно частное. Самый популярный пример коллективного
измерения — дата, потому что время присутствует почти при любом
показателе. Анализировать константу по времени бессмысленно, поэтому
время обычно входит во все таблицы фактов.
Если не указать хотя бы одно измерение, операция выполняется на целом
диапазоне по неуказанному измерению. Например, указаны год и марка, но
не указан сотрудник — операция будет выполнена по всем сотрудникам.
Иерархии: сбалансированные, несбалансированные, неровные
Сбалансированная иерархия (balanced hierarchy) — число уровней
определено структурой и неизменно. Пример: руководитель → топ-менеджеры
→ департаменты → отделы → сотрудники. Другой пример: производитель →
марка → модель автомобиля. Каждый объект лежит внутри такой структуры, и
понятно, как по ней двигаться.
Несбалансированная иерархия (unbalanced hierarchy) — число уровней
может меняться. Каждая ветвь может содержать объекты не всех уровней.
Например, часть сотрудников приписана к департаментам и отделам, а часть
напрямую подчиняется топ-менеджеру, пропуская уровни. Такая иерархия
может наращиваться: сегодня глубина три, завтра четыре, послезавтра
пять, если меняется внутреннее устройство.
Неровная иерархия (ragged hierarchy) — число уровней определено
структурой и постоянно, но некоторые ветви могут не содержать объекты
какого-либо уровня. Пример: страны → регионы/штаты/кантоны/земли →
города. В Люксембурге нет внутреннего деления на штаты, поэтому ветвь
содержит только верхний уровень. Такая иерархия хранит жёсткую структуру
с исключениями и остаётся постоянной, в отличие от несбалансированной.
Отображение многомерности и место в архитектуре
Если измерений больше двух, сложный срез представляют как вложенную
таблицу: строки и столбцы имеют заголовки с объединением ячеек, затем
большая строка разбивается на подстолбцы, которые могут снова делиться.
Получается иерархическая структура, отображающая многомерный куб в
плоской таблице. Типичный пример — сводные таблицы в Excel: число
измерений не ограничено, и можно сворачивать данные по любому измерению.
В архитектуре данных системы наполняют исходные базы из бизнес-процессов
или ERP/CRM-систем. Затем данные попадают в хранилище, из хранилища —
в витрины данных, а из витрин строятся OLAP-кубы и аналитика. OLAP-куб
— ключевой элемент представления данных и проведения анализа; он
ускоряет получение итоговых отчётов и прогнозов.
Краткие итоги
Многомерная организация данных превращает хранилище из набора таблиц в
инструмент анализа. Ключевая идея — представить факты не изолированно,
а в координатах бизнес-измерений: времени, сотрудников, товаров,
подразделений. Тогда любой аналитический вопрос сводится к выбору
комбинации координат и показателя. Практическая ценность возникает,
когда правила агрегации определены заранее: для одних показателей
корректна сумма, для других — среднее или иная функция. Это не
техническая деталь, а условие достоверности выводов. Если правило
выбрано неверно, быстрый отчёт будет лишь быстрее вводить в заблуждение.
Срезы и вложенные таблицы позволяют переходить от общего к частному, не
теряя структуру. Иерархии измерений отражают реальную управленческую
логику. Сбалансированные структуры удобны для регламентированной
отчётности, несбалансированные — для организаций с исключениями и
прямым подчинением, неровные — для территориальных или
классификационных схем с пропусками уровней. Выбор типа иерархии влияет
на то, как строятся итоги и как пользователь перемещается по данным.
Коллективные измерения обеспечивают согласованность анализа между
разными процессами; частные ограничивают область применения.
На практике проектирование куба начинается не с инструмента, а с
вопросов бизнеса: какие решения будут приниматься, какие показатели их
поддерживают, по каким разрезам нужно сравнивать. Затем определяются
измерения, показатели, иерархии и правила агрегации. Предварительный
расчёт агрегатов уменьшает время отклика, но требует дисциплины в
описании правил. В итоге многомерная модель связывает хранилище, витрины
и аналитику в единый контур: данные поступают из источников,
раскладываются по измерениям и становятся основой отчётов и прогнозов.
Такой подход особенно полезен там, где важны скорость, сопоставимость и
возможность детализации.
OLAP-куб — многомерная модель данных в хранилище. Он хранит значения
показателей для комбинаций измерений. Пример: измерения — товар,
продавец, год; в ячейке — объём продаж. Если показателей несколько, в
ячейке несколько значений. Таблиц фактов и кубов может быть несколько.
Измерения — координаты анализа, показатели — анализируемые величины.
Ячейка — пересечение измерений. Измерения могут быть простыми или
иерархическими. Члены измерения — конкретные объекты: дата, год,
сотрудник.
Срез — сечение куба по значениям измерений. Суммируя ячейки среза,
получают итоги. Для объёма продаж обычно применяют сумму, но для
некоторых показателей — среднее или другую функцию. Агрегат —
сведение множества значений к одному. Если измерение не указано, агрегат
считается по всем его членам. Правила агрегации задаются заранее для
каждой размерности. Предварительный расчёт агрегатов ускоряет
аналитические запросы и уменьшает время отклика.
Измерения могут участвовать в нескольких таблицах фактов —
коллективные; не во всех — частные. Дата — типичное коллективное
измерение, так как показатели меняются во времени. Если не указать хотя
бы одно измерение, операция выполняется на целом диапазоне по этому
измерению.
Иерархии: сбалансированная — фиксированное число уровней (руководитель
→ топ-менеджеры → департаменты → отделы → сотрудники; производитель →
марка → модель). Несбалансированная — число уровней переменное, ветви
могут пропускать уровни (часть сотрудников напрямую подчиняется
топ-менеджеру). Неровная — число уровней постоянно, но отдельные ветви
могут не содержать объекты уровня (страна → регион → город; у
Люксембурга нет региона).
При числе измерений больше трёх куб отображают вложенными таблицами или
сводными таблицами Excel. В архитектуре: источники/ERP/CRM → хранилище →
витрины данных → OLAP-кубы → аналитика, отчёты, прогнозы. OLAP-куб —
ключевой элемент представления данных и анализа, ускоряет получение
итогов.
1. OLAP-куб — многомерная структура хранения данных, где показатель хранится для комбинации измерений.
2. Измерения задают координаты анализа, показатели — числовые величины в ячейках.
3. Если измерение не указано, вычисляется агрегат по всем его членам; правило агрегата задаётся заранее.
4. Для объёма продаж обычно применяют сумму, но для других показателей возможны среднее и иные функции.
5. Срез — сечение куба; суммируя ячейки, получают итоги по выбранным измерениям.
6. При числе измерений больше трёх куб отображают вложенными таблицами или сводными таблицами.
7. Иерархии измерений отражают уровни: время, сотрудники, товары, подразделения.
8. Члены измерения — конкретные объекты: дата, год, месяц, сотрудник, отдел.
9. Коллективные измерения участвуют в нескольких таблицах фактов; частные — не во всех. Дата часто коллективное измерение.
10. Сбалансированная иерархия имеет фиксированное число уровней; несбалансированная — переменное.
11. Неровная иерархия имеет фиксированное число уровней, но отдельные ветви могут пропускать уровни.
12. OLAP-кубы строятся на базе витрин данных и ускоряют отчётность и прогнозирование.
1. Что такое OLAP-куб и какую информацию он хранит?
2. Как связаны измерения, показатели и ячейки куба?
3. Почему для OLAP-куба не требуется каждый раз склеивать нормализованные таблицы?
4. Что происходит, если при аналитическом запросе не указать одно из измерений?
5. Чем срез отличается от агрегата?
6. Почему для одних показателей применяют сумму, а для других — среднее?
7. Как задаются правила агрегации и почему их определяют заранее?
8. Что такое член измерения? Приведите примеры для времени и сотрудников.
9. Чем коллективное измерение отличается от частного? Почему дата часто бывает коллективным измерением?
10. Охарактеризуйте сбалансированную, несбалансированную и неровную иерархии.
11. Как отобразить куб с числом измерений больше трёх в плоской таблице?
12. Какое место занимают OLAP-кубы в цепочке «источники — хранилище — витрины — аналитика»?