这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。
我也要与时俱进了,被itpub2.0牵着尾巴,拼命的奔跑,不停的灌水...
【原】关于数据仓库 —lookup表的一点看法
上一篇 /
下一篇 2008-02-22 23:00:20
/ 个人分类:数据仓库专区
对于搞数据仓库的人来说,面试的时候总会问及到lookup表的概念。。。。。。5E\G~v9ak1T6vk0对于搞数据仓库的人来说,面试的时候总会问及到lookup表的概念,这个概念一开始对我而言也是很莫名其妙的;明明基础表和事实表的一个关联就可以完成的事情需要什么lookup表。
通常的做法 SELECT A.ID,SUM(Measure1) as Measure1,SUM(Measure2) as Measure2FROM table_original A,table_dimension B V[ tj!Ku!r,`&|0WHERE A.ID = B.ID dV~(lOY)y0ITPUB个人空间#?K6dw8P$mp%v
为了严谨起见,我们的处理最多是加以NULL值或者未匹配键值的处理 SELECT -- A.ID,B.ID, -- the transformed field names IDITPUB个人空间,E"FT+tJ(h5GT DECODE(NVL(A.ID,-2),-2,-2, DECODE(NVL(B.ID,-1),-1,-1,B.ID)) AS ID, %Q k)ae#f%U
BI0SUM(CASE A.Measure1>0 AND A.Measure1<100 THEN Measure1 ELSE 0 ENDITPUB个人空间#bx9e&a;r*B|
l ) Measure1, *eYNTF h/i0~E}q0SUM(CASE A.Measure2>0 AND A.Measure2<100 THEN Measure2 ELSE 0 ENDITPUB个人空间PN/}Q
V6U ) Measure2, +~'s;Tm1@d0N0]0FROM table_original A,table_dimension BITPUB个人空间
P/M[#t8EVq WHERE A.ID = B.ID(+) jg~$WU.]0GROUP BY DECODE(NVL(B.ID,-2),-2,-2, DECODE(NVL(B.ID,-1),-1,-1,B.ID)) |

但是对于老外来说,为了严谨起见,把维度做为历史处理的轨迹进行保存,主要是全记录处理方式其中包括版本号方式、时戳方式、标志方式(具体处理方式参看数据仓库系列文章);所以必须增加一个代理主键,以记录和替代原来不断变化的内容,从而保存原主键信息的变化轨迹。主键的变化导致与原事实表关联过程中的脱节,必须使用新的外键代理原来的外键值。同时主键的变化导致在与事实表关联过程的变化,当然我们也可以使用复杂的视图和函数方式寻找到相应的外键值;但是对于老外来说宁愿用最简单的方式,图形化的操作和最直观的方式进行处理,毕竟数据库、数据仓库、ETL图形工具全部都是由老外发明的。实现的原理其实很简单:

K&s mw(e7RQR05L5@2R5EB#gsZX&i0SQLServer2005 SSIS实现的一个实例ITPUB个人空间2zO9{"Oe7H
ITPUB个人空间$YJ4dh!x7[:?
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: