我在数据仓库中有一些实体:
人员 - 具有属性personId、dateFrom、dateTo和其他可变属性,例如姓氏、出生日期等 - 慢变维度
文档 - documentId、number、type
地址 - addressId、city、street、house、flat
(人员和文档)之间的关系是一对多,(人员和地址)之间是多对多。
我的目标是创建历史事实表,以回答以下问题:
- 在指定日期,哪些人(带着哪些文档)住在指定的地址上?
2.在指定时间区间内,指定地址的居民历史记录如何呢?
这不仅是DW设计的目的,而且我认为这是DW设计中最难的事情。
例如,布朗小姐(personId = 1),携带documentId = 1和documentId = 2的文件,自2005年1月1日至2010年2月2日一直住在addressId = 1处,然后搬到了addressId = 2,自2010年2月3日起一直住在那里(NULL?)。但是自2006年4月5日以来,她已经改变了姓氏为格林夫人,并且她的第一个文档从documentId = 1变成了documentId = 3,自2007年6月7日以来。布莱克先生(personId = 2),documentId = 4,自2010年2月3日起一直住在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)的事实表,但我不知道如何加载这个表,以及如何获得这种结构所期望的结果。
如果能得到任何帮助,我将感激不尽!