Что такое факты и измерения в хранилище данных?

«Что такое факты и измерения в хранилище данных?» — вопрос из категории Моделирование данных и DWH, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Это ключевые концепции многомерного моделирования в хранилищах данных, лежащие в основе схем «звезда» и «снежинка».

  • Факты (Facts) — это числовые, аддитивные показатели бизнес-процессов, которые можно суммировать, усреднять и т.д. Они отвечают на вопрос «Что произошло?».

    • Примеры: Сумма продажи, количество единиц товара, продолжительность звонка, остаток на счёте.
    • Хранятся в таблицах фактов, которые содержат ключи для связи с измерениями и сами числовые меры (metrics).
  • Измерения (Dimensions) — это описательные атрибуты, которые контекстуализируют факты. Они отвечают на вопросы «Кто? Что? Где? Когда? Почему?» и используются для фильтрации, группировки и маркировки данных.

    • Примеры: Дата, продукт, клиент, магазин, статус заказа.
    • Хранятся в таблицах измерений, которые содержат первичные ключи и текстовые/категориальные поля.

Пример на SQL (схема «звезда» для розничных продаж):

-- Измерение: Продукт
CREATE TABLE dim_product (
    product_key INT PRIMARY KEY, -- Суррогатный ключ
    product_id INT,              -- Бизнес-ключ из OLTP-системы
    product_name VARCHAR(255),
    category VARCHAR(100),
    brand VARCHAR(100)
);

-- Факт: Продажи
CREATE TABLE fact_sales (
    date_key INT REFERENCES dim_date(date_key),
    product_key INT REFERENCES dim_product(product_key),
    store_key INT REFERENCES dim_store(store_key),
    quantity_sold INT,          -- Мера (факт)
    revenue DECIMAL(15,2)       -- Мера (факт)
);

Простой аналитический запрос: SELECT brand, SUM(revenue) FROM fact_sales JOIN dim_product USING(product_key) GROUP BY brand;