Короткий ответ
Суррогатный ключ — внутренний идентификатор строки измерения. Натуральный ключ сохраняют как бизнес-атрибут для сопоставления с источником, но факты обычно ссылаются на суррогатный ключ.
Как это работает подробнее
Один натуральный идентификатор может меняться, конфликтовать между источниками или соответствовать нескольким версиям SCD Type 2. Каждая историческая версия получает собственный неизменяемый surrogate key.
- Интеграция. Внутренний ключ отделяет модель DWH от правил конкретной CRM.
- История. Факт связывается с версией измерения, действовавшей в момент события.
Пример кода
current_customer.sql
SELECT customer_sk, city
FROM dim_customer
WHERE source_system = 'crm'
AND customer_id = 'C-1029'
AND valid_to IS NULL;Что использовать на практике
- Храните одновременно surrogate key, natural key и идентификатор исходной системы.
- Заведите специальную строку измерения для неизвестного ключа, если бизнес-правила это допускают.
Подводные камни
- Потеря natural key. Без него сложно сверять сущность с источником.
- Нестабильная генерация. Пересоздание surrogate key при полной загрузке ломает связи с фактами.