Ответ
Слои Staging (STG) и Data Mart (DM) — ключевые компоненты архитектуры хранилища данных (DWH), каждый со своей целью.
Staging (Промежуточный слой)
- Назначение: Временное хранение «сырых» данных, загруженных из источников (source systems), в их исходном виде или с минимальной очисткой (например, удаление явных дубликатов).
- Цель: Изолировать процессы извлечения (Extract) и загрузки (Load) от сложных преобразований (Transform). Это позволяет повторно загружать данные из STG в случае сбоя на этапе трансформации, не обращаясь к источникам.
- Структура: Часто повторяет структуру источника. Данные обычно хранятся недолго (сутки/неделя).
Data Mart (Витрина данных)
- Назначение: Слой, ориентированный на конкретную предметную область или бизнес-подразделение (например, продажи, маркетинг, финансы).
- Цель: Предоставить конечным пользователям (аналитикам, отчетным системам) готовые, агрегированные и удобные для анализа данные в форме, оптимизированной под их запросы (звёздная/снежинковая схема).
- Структура: Денормализованные таблицы фактов и измерений.
Пример потока данных:
-- 1. Загрузка в Staging (сырые данные)
INSERT INTO stg.orders
SELECT * FROM source_system.orders WHERE load_date = CURRENT_DATE;
-- 2. Преобразование и загрузка в Data Mart (очищенные, агрегированные данные)
INSERT INTO dm.sales_daily (sale_date, product_category, total_revenue, total_units)
SELECT
DATE_TRUNC('day', o.order_date) AS sale_date,
p.category AS product_category,
SUM(o.amount) AS total_revenue,
COUNT(o.id) AS total_units
FROM stg.orders o
JOIN stg.products p ON o.product_id = p.id
WHERE o.status = 'completed'
GROUP BY DATE_TRUNC('day', o.order_date), p.category;
Таким образом, STG — это «сырьё», а DM — «готовый продукт» для анализа.