小编Arg*_*ist的帖子

如何创建历史事实表?

我的数据仓库中有一些实体:

  1. - 具有属性personId,dateFrom,dateTo和其他可以更改的人,例如姓氏,出生日期等 - 慢慢变化的维度

  2. 文档 - documentId,数字,类型

  3. 地址 - addressId,city,street,house,flat

(人与文件)之间的关系是一对多,(人与地址)是多对多的.

我的目标是创建历史事实表,可以回答以下问题:

  1. 哪些人在规定的日期定义了哪些文件?

2,居民的定义地址在规定的时间间隔内有什么历史?

这不仅适用于DW的设计,但我认为这是DW设计中最难的事情.

例如,布朗小姐的personId = 1,自01/01/2005至02/02/2010以来,documentId = 1且documentId = 2的文档已经存在于addressId = 1的地址,然后移至addressId = 2从2010年2月2日开始生活到当前日期(NULL?).但她自2006年5月4日起将姓氏改为格林夫人,自2007年7月6日起,她的第一份文件记录为documentId = 1至documentId = 3.带有personId = 2的Bl​​ack先生,自2010年2月2日至今日,documentId = 4一直存在于addressId = 1.

对于问题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
Run Code Online (Sandbox Code Playgroud)

我有一个想法,用复合键(personId,documentId,addressId,dateFrom)创建事实表,但我不知道如何加载此表,然后使用此结构获得预期的结果.

我会很高兴得到任何帮助!

sql data-warehouse fact-table datahistory

11
推荐指数
1
解决办法
3817
查看次数

如何在ExtJS Combobox中获取所选displayField的值

如何在ExtJS 3.4 ComboBox中获取所选displayField的值?getValue()返回valueField,但我需要其他的.

extjs extjs3

3
推荐指数
2
解决办法
3万
查看次数

标签 统计

data-warehouse ×1

datahistory ×1

extjs ×1

extjs3 ×1

fact-table ×1

sql ×1