У меня есть несколько сущностей в моем хранилище данных:
Person - с атрибутами personId, dateFrom, dateTo и другими их можно изменить, например фамилия, дата рождения и так далее - медленно меняющееся измерение
Документ - documentId, number, type
Address - addressId, city, street, house, flat
Отношения между (Person и документ) - "один ко многим" и (человек и адрес) - "многие ко многим".
Моя цель - создать таблицу фактов истории, которая может ответить нам на следующие вопросы:
2, Какую историю жителей имеет определенный адрес в определенный интервал времени?
Это не только то, что разработано DW, но я думаю, что это самая сложная вещь в дизайне DW.
Например, мисс Браун с personId = 1, документы с documentId = 1 и documentId = 2 находились по адресу с addressId = 1 с 01.01.2005 по 02.02.2010, а затем перемещены на addressId = 2. где проживал с 02.03.2010 по текущую дату (NULL?). Но она сменила фамилию на миссис Грин с 04.05.2006 и свой первый документ с documentId = 1 на documentId = 3 с 06.07.2007. Г-н Блэк с personId = 2, documentId = 4 проживал по адресу addressId = 1 с 02.03.2010 г. по настоящее время.
Ожидаемый результат по нашему запросу для вопроса 2, где addressId = 1, а временной интервал с 01.01.2000 по настоящее время, должен быть таким:
Строки:
last_name="Brown", documentId=1, dateFrom=01/01/2005, dateTo=04/04/2006
last_name="Brown", documentId=2, dateFrom=01/01/2005, dateTo=04/04/2006
last_name="Green", documentId=1, dateFrom=04/05/2006, dateTo=06/06/2007
last_name="Green", documentId=2, dateFrom=04/05/2006, dateTo=06/06/2007
last_name="Green", documentId=2, dateFrom=06/07/2007, dateTo=02/01/2010
last_name="Green", documentId=3, dateFrom=06/07/2007, dateTo=02/01/2010
last_name="Black", documentId=4, dateFrom=02/03/2010, dateTo=NULL
У меня возникла идея создать таблицу фактов с составным ключом (personId, documentId, addressId, dateFrom), но я понятия не имею, как загрузить эту таблицу, а затем получить ожидаемый результат с этой структурой.
Буду рад любой помощи!