-
如何撰写被引用的科学论文和获得资助的提案:维度的基本加载计划
资源介绍
6.2 维度的粒度
维度建模人员常常使用维度的粒度(Grain)这一概念。这意味着,对数据仓
库架构和 ETL 团队而言,在业务上分析某个数据源,定义出维度的键值,确保此
数据源相对应的粒度定义是个挑战。常见的例子就是商业客户维度。简单的讲此
维度的粒度是客户,可以肯定的是给定了某个数据源文件,那么数据的粒度一定
是由某些字段构成的。源文件中的数据异常和细微差别极有可能破坏最初对粒度
的假设。当然,我们可以做一个简单的测试,看一看字段 A,B,C 是否能够组
成源表的主键:
Select A, B, C, count(*)
From dimensiontablesource
Group by A, B, C
Having Count(*) > 1
如果此查询返回了记录,那么字段 A,B 和 C 就不能组成维表的主键(也就
是粒度)。而且,此查询也能够帮助查出哪些行与假定不符。
抽取过程有可能会带来数据的冗余。比如,在非规范化的订单交易系统中,
订单的配送号(Ship Via)并不是存放在一个专门的码表中,而是全部直接存放
在订单交易表中,这样会有很多的重复。要创建维度模型,必须通过 SELECT
DISTINCT 操作来建立 Ship Via 维表,这时候,源订单交易表中任何的数据异常都
可能带来数据的冗余。
6.3 维度的基本加载计划
反倒有些维度完全是由 ETL 团队建立,没有依赖外部的数据源,它们通常是
将操作代码转化为文本的小型查找维度。这种情况下并没有真正的 ETL 过程。而
这个小的维度表生成为一个关系表的最终形式。
真正重要的维度抽取是从一个或多个数据源开始的。我们已经描述过 ETL 数
据流的四个步骤。这里有一些与维度相关的特别的想法。