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