g********s 发帖数: 3652 | 1 通过ETL这道工序,不同来源不同格式的数据被收拾整齐后放进一批用于产生报表的
tables.
这些tables是按照star schema的方式设计的,它们分为Dimension tables 和Fact
tables. 举个简单的例子,假设数据仓库记录的是Mutual Funds 销售业绩,那么
每卖出的一份Mutual Fund,都需要记录某推销员,某月某日,卖出了某个Mutual Fund
给某某客户。
这一条条记录就叫 row, record or transaction. 如果你买了三个不同的Mutual Fund
,就有三行记录。这些细节被存放在叫Fact table里。
问:既然一切信息都包括在 Fact table了,那么Dimension tables放什么信息?
答:举个例子
Fact table 每条记录只是这个样子的:
客户 产品 时间 推销员 金额
55551 E12 321 098 4,800
55551 R78 321 098 182,000
89999 K95 776 098 8,500
........
........
你能看出来,55551号客户至少在代号为321的那一天,从代号为098的推销员手里买了
$4,800的代号为E12 的产品还买了$182,000的代号为R78的产品
Fact table 里除了 金额,全是‘代号‘。这个金额就是 measure, 其余的每个代号都
分别代表一个dimension.
问题是,银行经理必须知道加利福尼州上个季度的销售额是多少?
那么这个时间代号321到底是哪一天?客户55551住在哪个州?
答案是:所有用‘代码’代表的那个Dimensio的细节都在Dimension table藏着呢!
先看客户Dimension table:
客户代号 客户名 客户姓 State
55551 Tony Li CA
89999 Rose Wang NY
33367 Xing Zao AZ
...........................
再来看时间 Dimension table:
时间代号 日期 月 季度 年
321 11/12/2013 11 4 2013
776 3/7/2014 3 1 2014
..............
如果只有Fact table,报表无法显示这份钱来自哪个州,哪个季度。
可见:Dimension tables记录的是详细具体全面的 客户,产品,时间,推销员的信息
,而Fact table只记录了这些信息的一个‘代号’。当形成报表时,我们必须联合使用
dimension tables and Fact tables.
你们上SQL课学的 join 就是 join Dimension table and Fact table。可见你们学的
东东很关键! |
|