角色维度扮演
- 单个物理维度可以被事实表多次引用, 每个引用连接逻辑上存在差异的角色维度。 例如, 事实表可以有多个日期, 每个日期通过外键引用不同的日期维度, 原则上每个外键表示不同的日期维度视图, 这样引用具有不同的含义。 这些不同的维度视图具有唯一的代理键列名, 被称为角色, 相关维度被称为角色扮演维度。
- 当一个事实表多次引用一个维度表时会用到角色扮演维度。 例如, 一个销售订单有一个是订单日期, 还有一个请求交付日期, 这时就需要引用日期维度表两次。
- 我们期望在每个事实表中设置日期维度, 因为总是希望按照时间来分析业务情况。 在事务型事实表中, 主要的日期列是事务日期, 例如, 订单日期。 有时会发现其他
日期也可能与每个事实关联, 例如, 订单事务的请求交付日期。 每个日期应该成为事实表的外键。 - 两类角色扮演维度的实现, 分别是表别名和数据库视图。这两种实现都使用了Hive支持的功能。 表别名是在SQL语句里引用维度表多次, 每次引用都赋予维度表一个别名。 而数据库视图, 则是按照事实表需要引用维度表的次数, 建立相同数量的视图。