代理键的理解
来源:互联网 发布:古墓丽影崛起数据损毁 编辑:程序博客网 时间:2024/05/21 09:55
在创建维度表时总是用代理键,只是对它的定义以及具体作用的理论文字一直提取不好,今天读到的一段关于代理键的文字让我对此窃喜一阵:
“我们在建立维度表时要充分使用代理键。代理键是数值型的 ID 号码,它唯一标识了每一维度成员。更重要的是,在聚合时,数值型字段的匹配和比较, JOIN 效率高,便于聚合。同时,代理键对缓慢变化维度有着重要的意义,在原数据主键相同的情况下,它起到了对新数据与历史数据的标识作用。
在此,我们不妨谈一谈维度表随时间变化的问题,这是我们经常会遇到的情况,我们称其为缓慢变化维度。 比如我们增加了新的产品,或者产品的 ID 号码修改了,或者产品增加了一个新的属性,此时,维度表就会被修改或者增加新的记录行。这样,我们在 ETL 的过程中,就要考虑到缓慢变化维度的处理。对于缓慢变化维度,有三种情况:
1 、缓慢变化维度第一种类型:历史数据需要修改。这种情况下,我们使用 UPDATE 方法来修改维度表中的数据。例如:产品的 ID 号码为 123 ,后来发现 ID 号码错了,需要改写成 456 ,那么,我们就在 ETL 处理时,直接修改维度表中原来的 ID 号码为 456 。
2 、缓慢变化维度第二种类型:历史数据保留,新增数据也要保留。这时,要将原数据更新,将新数据插入,我们使用 UPDATE / INSERT 。比如:某一员工 2005 年在 A 部门, 2006 年时他调到了 B 部门。那么在统计 2005 年的数据时就应该将该员工定位到 A 部门;而在统计 2006 年数据时就应该定位到 B 部门,然后再有新的数据插入时,将按照新部门( B 部门)进行处理,这样我们的做法是将该维度成员列表加入标识列,将历史的数据标识为“过期”,将目前的数据标识为“当前的”。另一种方法是将该维度打上时间戳,即将历史数据生效的时间段作为它的一个属性,在与原始表匹配生成事实表时将按照时间段进行关联,这种方法的好处是该维度成员生效时间明确。
3 、缓慢变化维度第三种类型:新增数据维度成员改变了属性。例如:某一维度成员新加入了一列,该列在历史数据中不能基于它浏览,而在目前数据和将来数据中可以按照它浏览,那么此时我们需要改变维度表属性,即加入新的字段列。那么,我们将使用存储过程或程序生成新的维度属性,在后续的数据中将基于新的属性进行查看
- 代理键的理解
- 代理模式的理解
- 代理类的理解
- 代理的理解
- 反向代理的理解
- 动态代理的理解
- 反向代理的理解
- 代理服务的理解
- 代理模式的理解
- 动态代理的理解
- 代理模式(静态代理)的通俗理解
- 正向代理与反向代理的理解
- 正向代理与反向代理的理解
- 代理模式的再理解--动态代理
- 代理模式(静态代理)的通俗理解
- 正向代理,反向代理的理解
- 代理与反向代理的个人理解
- 代理和反向代理的理解(updating)
- SQL语句集锦——数据库表查询、更新、删除等SQL语法
- VC++ 模拟表单提交
- ns-3实验环境搭建(上)
- C语言:五大基本排序算法
- 八大排序
- 代理键的理解
- ORACLE索引
- 非静态的字段、方法或属性……要求对象引用【學習】要求對象引用?
- LeetCode: Spiral Matrix II
- Java中的Enum的使用与分析
- Ecshop首页显示累计售出(已售出XX件)(精品,新品,热销,分类商品)的方法
- 跟踪linux里的命令的系统调用strace
- MYGUI在win7下的中文完美输入及其显示
- ogrese LOD