当前位置: 代码迷 >> 数据仓库 >> 关于向数据仓库中导入数据的两个有关问题
  详细解决方案

关于向数据仓库中导入数据的两个有关问题

热度:182   发布时间:2016-05-05 16:14:39.0
关于向数据仓库中导入数据的两个问题

一,
维度表都有自己的内部ID做主键,
然后将其拉到事实表中做外键
(事实表中的主键是由多个维度表拉如的外键共同做联合主键)

例如要给数据仓库到底事实表导入100条记录,这个事实表有多个维度表,其中一个维度表是:D_国家
在ETL导入数据时,是否要先检测本次导入的100条记录中所有的国家名称在D_国家中找到对应的ID
如果没有,则,在D_国家中插入新的国家记录
然后再在F_XX表中导入要导入的100条记录

-----上面的说法对吗?-----

二,历史数据的更新

事实表中保存的是所有的合同明细数据,一个合同就是一条记录
通过不同的维度表,对合同的数据进行分析

上面这种对数据仓库的理解对不对,
如果对,则在如下情况发生时应该如何处理,
昨天从OLTP把数据导入到数据仓库中
今天将一个前天的合同数据进行了修改,那么这个被修改了的数据,应该如何更新到数据仓库中
要全部先删后插吗,如果不是,难道要OLTP系统记录每条记录最后被修改的时间吗?这个恐怕也不现实啊
还是要在事实表中记录OLTP系统中的主键,更新的时候做UPATE
???


------解决方案--------------------
本人也是初学者,给出自己的观点。
一,
维度表应该在事实表更新前校验,确保事实表的所有外键ID都能在维度表里面找到。

二,
数据仓库的类型还是有多种的,得看你的是否对历史数据敏感。如果比较敏感的当然得用时间段来标识废弃历史数据(
例如:用FROM_DATE和TO_DATE两个字段来标识
原来数据:
ID CONTRACT_ID FROM_DATE TO_DATE
1 000001 Nov/11/09 Dec/31/9999

修改后
ID CONTRACT_ID FROM_DATE TO_DATE
1 000001 Nov/16/09 Nov/17/09
2 000001 Nov/16/09 Dec/31/9999

把TO_DATE=Dec/31/9999 作为检索条件,原来的那一条就过滤掉了。