Измерения (Dimensions) в OLAP — это структурные элементы многомерной модели данных, которые определяют различные аспекты анализа и обеспечивают контекст для мер (числовых показателей). Это категории, по которым можно "разрезать" данные для анализа.
Уровни (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):
Схема "звезда":
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)
);
Drill-Down/Drill-Up:
Slice-and-Dice:
Pivot (Rotation):
Медленно изменяющиеся измерения (SCD):
Вырожденные измерения:
Анализ продаж по измерениям:
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 — это смысловые оси анализа, которые позволяют рассматривать количественные показатели (меры) в различных разрезах и иерархиях, обеспечивая глубину и гибкость аналитики.