我的数据仓库中有一些实体:
Person- 具有 personId、dateFrom、dateTo 和其他可以更改的属性,例如姓氏、出生日期等 - 缓慢变化的维度
Document- 文档 ID、编号、类型
Address- 地址 ID、城市、街道、房屋、公寓
(人员和文档)之间的关系是一对多,(人员和地址)之间的关系是多对多。
我的目标是创建历史事实表,可以回答我们以下问题:
- 哪些人持有哪些文件,在规定的日期居住在规定的地址?
2、定义的地址在定义的时间间隔内有哪些居民历史记录?
这不仅仅是DW设计的目的,而且我认为这是DW设计中最难的事情。
例如,personId=1 的 Brown 小姐,documentId=1 和 documentId=2 的文档自 2005 年 1 月 1 日到 2010 年 2 月 2 日一直居住在 addressId=1 的地址,然后移至 addressId=2,该地址已从 2010 年 2 月 3 日到当前日期(NULL?)。但自 2006 年 4 月 5 日起,她已将姓氏更改为 Green 夫人,自 2007 年 6 月 7 日起,她将第一份文档的 documentId=1 更改为 documentId=3。 personId=2、documentId=4 的 Black 先生自 2010 年 2 月 3 日至今一直居住在 addressId=1。
对于问题 2(其中 addressId=1,时间间隔是从 01/01/2000 到现在)的查询的预期结果必须类似于:
Rows:
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)创建事实表,但我不知道如何加载该表,然后使用该结构获得预期结果。
我将很高兴获得任何帮助!