Импорт DWH с суррогатными ключами (и SCD)

У меня есть хранилище данных, в котором используются внутренние суррогатные ключи и медленно меняющиеся размеры типа 2. На полянке у нас просто бизнес-ключи от erp-системы, вот так:

Изображение очистки, извините, у вас недостаточно репутации, чтобы опубликовать его напрямую или более двух ссылок

Вместо этого в хранилище данных мы хотим использовать суррогатные ключи (Примечание: цена статьи изменена с 500 $ до 1000 $, а в статьях используются суррогатные ключи, где это возможно, здесь только для производителя).

Изображение хранилища данных

Если бы мы использовали только бизнес-ключи, это не проблема, просто сравните, обновите старые записи, вставьте новые записи. Но как лучше всего это сделать с суррогатными ключами?

Получить существующие идентификаторы (0 или -1 для еще не существующих) из хранилища данных на поляне, а затем сравнить записи?

введите здесь описание изображения

Хранить бизнес-ключи в хранилище данных, сравнивать их и обновлять идентификаторы, а затем в хранилище данных?

i.pictr.com/3kqn6wb9ou.png


person Josh Alvo    schedule 17.02.2014    source источник
comment
не ясно, каково ваше требование. Если вы хотите загрузить данные из исходной очистки в dwh - вам нужно сгенерировать суррогатные ключи - для этого вы также храните первичные ключи исходной системы в таблице dwh вместе с суррогатными ключами. и при загрузке вы выполняете поиск данных в таблице dwh на основе исходных/естественных ключей, и если запись существует, вы сравниваете столбцы, для которых хотите отслеживать изменения, и в случае изменения значений вы обновляете существующую строку validuntil и вставляете новую строку с новым validfrom ..   -  person garpitmzn    schedule 17.02.2014
comment
Таким образом, вы имеете в виду, что лучше всего хранить бизнес-ключи в хранилище данных, как показано на последнем снимке экрана ?   -  person Josh Alvo    schedule 17.02.2014
comment
да, имеет смысл хранить исходные бизнес-ключи в dwh   -  person garpitmzn    schedule 17.02.2014


Ответы (1)


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

Но вы должны хранить бизнес-ключи исходного объекта только в целевом объекте. Позвольте мне уточнить, бизнес-ключ производителя должен отображаться только в таблице «Производитель» в вашем DWH, а не где-либо еще. Когда вам нужно указать производителя в другой таблице, например в статье, вы используете суррогатный ключ производителя.

Итак, вы правильно поняли на втором скриншоте.

Затем, когда вы загружаете таблицу статей и вам нужно знать, изменился ли производитель для конкретной статьи, вы сначала ищете суррогатный ключ производителя на основе его бизнес-ключа и сравниваете суррогатный ключ с ключом в таблице статей. Вот как это обычно делается.

person michalko    schedule 30.08.2014