Что такое суррогатный ключ
Что проверяют
Знаете ли вы, зачем в хранилище заводят ключ, которого нет в источнике. Для инженера данных это вопрос не про определение, а про историчность: без суррогатного ключа не собирается измерение с историей, и услышать хотят именно это.
Как отвечать
Суррогатный ключ это искусственный идентификатор строки без бизнес-смысла: значение последовательности, счётчик загрузки или хеш от бизнес-ключа. Противопоставляется натуральному, то есть ключу из самих данных: номер документа, артикул, адрес почты.
Причин завести его несколько. Бизнес-ключ меняется, а внешние ссылки на него меняться не должны. Он бывает составным и строковым, и соединение по нему дороже, чем по узкому целому. В разных источниках один и тот же объект имеет разные ключи, и их надо свести в одну сущность.
Главная причина отдельно: измерение с историей. При медленно меняющемся измерении второго типа одна сущность живёт в таблице несколькими версиями строк, и бизнес-ключ в ней уже не уникален. Факт должен ссылаться на ту версию, которая действовала в момент события, а сослаться на неё можно только через суррогатный ключ. Благодаря этому отчёт за прошлый период показывает прежний регион клиента, а не сегодняшний.
Натуральный ключ при этом остаётся в таблице отдельным атрибутом с индексом: по нему идёт сопоставление при загрузке и ручной поиск.
Где спотыкаются
Выбрасывают бизнес-ключ, оставив только суррогатный. Следующая загрузка уже не понимает, какую строку обновлять, а сверка с источником превращается в расследование.
Считают, что суррогатный ключ обеспечивает уникальность сущности. Он уникален для строки, а не для объекта: повторная загрузка файла честно выдаст два новых ключа на одного клиента. Уникальность обеспечивает ограничение на бизнес-ключ, а не счётчик.
Подставляют в факт текущую версию измерения. История в измерении при этом есть, а отчёты всё равно переписываются задним числом, и расхождение всплывает через квартал, когда сверять уже поздно.