Что такое измерения в OLAP?sql-34

Измерения (Dimensions) в OLAP — это структурные элементы многомерной модели данных, которые определяют различные аспекты анализа и обеспечивают контекст для мер (числовых показателей). Это категории, по которым можно "разрезать" данные для анализа.

1. Основные характеристики измерений

  • Категориальная природа: Содержат описательные атрибуты (названия, категории, даты)
  • Иерархичность: Поддерживают вложенные уровни детализации (например: Год → Квартал → Месяц)
  • Стабильность: Изменяются реже, чем фактические данные
  • Ключи связи: Содержат первичные ключи для соединения с факт-таблицами

2. Компоненты измерений

Уровни (Levels):

-- Пример иерархии времени
CREATE TABLE dim_time (
    time_id INT PRIMARY KEY,
    date DATE,
    day INT,
    month INT,
    quarter INT,
    year INT,
    day_of_week VARCHAR(10),
    is_weekend BOOLEAN
);

Атрибуты:

  • Описательные характеристики (цвет, размер, название)
  • Ключевые и неключевые атрибуты

Члены (Members):

  • Конкретные значения измерения (например: "2024", "Q1", "Январь")

3. Типичные измерения в бизнес-аналитике

  1. Время: Самый распространенное измерение
  2. География: Страна, регион, город
  3. Продукты: Категория, подкатегория, SKU
  4. Клиенты: Демография, сегмент
  5. Каналы продаж: Интернет, розница, опт

4. Техническая реализация

Схема "звезда":

CREATE TABLE dim_product (
    product_key INT PRIMARY KEY,
    product_name VARCHAR(100),
    category VARCHAR(50),
    subcategory VARCHAR(50),
    brand VARCHAR(50)
);

CREATE TABLE fact_sales (
    sale_id INT,
    product_key INT REFERENCES dim_product(product_key),
    time_key INT REFERENCES dim_time(time_key),
    amount DECIMAL(12,2)
);

Схема "снежинка" (нормализованные измерения):

CREATE TABLE dim_category (
    category_id INT PRIMARY KEY,
    category_name VARCHAR(50)
);

CREATE TABLE dim_product (
    product_key INT PRIMARY KEY,
    product_name VARCHAR(100),
    category_id INT REFERENCES dim_category(category_id)
);

5. Операции с измерениями

Drill-Down/Drill-Up:

  • Детализация от года к месяцам
  • Агрегация от месяцев к кварталам

Slice-and-Dice:

  • Фильтрация по определенному срезу (например: только 2024 год)
  • Изменение комбинации измерений

Pivot (Rotation):

  • Изменение ориентации измерений на осях отчета

6. Особые типы измерений

Медленно изменяющиеся измерения (SCD):

  • Тип 1: Перезапись (корректировка истории)
  • Тип 2: Версионирование (сохранение истории)
  • Тип 3: Хранение ограниченной истории

Вырожденные измерения:

  • Атрибуты, которые не выделены в отдельную таблицу (например, номер заказа)

7. Практический пример

Анализ продаж по измерениям:

SELECT
    t.year,
    t.quarter,
    p.category,
    g.region,
    SUM(s.amount) AS total_sales
FROM fact_sales s
JOIN dim_time t ON s.time_key = t.time_key
JOIN dim_product p ON s.product_key = p.product_key
JOIN dim_geography g ON s.geo_key = g.geo_key
GROUP BY t.year, t.quarter, p.category, g.region;

Резюмируем: измерения в OLAP — это смысловые оси анализа, которые позволяют рассматривать количественные показатели (меры) в различных разрезах и иерархиях, обеспечивая глубину и гибкость аналитики.