构建企业级数据仓库的五步法

一. 确定主题

       即确定数据分析或前端展现的主题(例如:某年某月某地区的啤酒销售情况). 主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系, 确定主题时要综合考虑.

二. 确定量度

        确定主题后, 需要考虑分析的技术指标(例如: 年销售额等). 它们一般为数值型数据, 其中有些度量值不可以汇总; 有些可以汇总起来, 以便为分析者提供有用的信息. 量度是要统计的指标, 必须事先选择恰当, 基于不同的量度可以进行复杂关键性指标(KPI)的设计和计算.

三. 确定事实数据粒度

        确定量度之后, 需要考虑该量度的汇总情况和不同维度下量度的聚合情况; 例如在业务系统中数据最小记录到秒, 而在将来分析需求中, 时间只要精确到天就可以了. 在ETL处理过程中, 按天来汇总数据, 这时数据仓库中量度的粒度就是”天”. 如果不能确认将来的分析需求中是否要精确到秒, 那么, 我们要遵循”最小粒度原则”, 在数据仓库中的事实表中保留每一秒的数据, 从而在后续建立多维分析模型(Cube)的时候, 会对数据提前进行汇总, 保障产生分析结果的效率.

四. 确定维度

        维度是分析的各个角度, 例如:我们希望按照时间, 或者地区, 或者按照产品进行分析. 那么这里的时间, 地区, 产品就是相应的维度. 基于不同的维度, 可以看到各个量度汇总的情况, 也可以基于所有的维度进行交叉分析.

        维度的层次(Hierarchy)和级别(Level). 例如: 在时间维度上, 按照”年-季度-月”形成一个层次, 其中的”年”, “季度”, “月”成为了这个层次的3个级别. 我们可以将”产品大类-产品子类-产品” 换分为一个层次, 其中包含”产品大类”, “产品子类”,”产品”三个级别.

        我们可以将3个级别设置成一张数据表中的3个字段, 比如时间维度; 我们也可以使用三张表, 分别保存产品大类, 产品子类, 产品三部分数据, 比如产品维度.

        建立维度表时要充分使用代理键, 代理键是数值型的IP号码(每张表的第一个字段), 它唯一标识了第一维成员. 在聚合时, 数值型字段的匹配和比较, join效率高. 同时代理键在缓慢变化维中, 起到了对新数据与历史数据的表示作用.

五. 创建事实表

        在确定好事实数据和维度后, 将考虑加载事实表. 业务系统的一笔笔生产, 交易记录就是要建立的事实表的原始数据.

        我们的做法是将原始表与维度表进行关联, 生成事实表. 关联时有为空的数据时,需要使用外连接, 连接后将各维度的代理键取出放于事实表中, 事实表除了各维度代理键外, 还有各度量数据, 不应该存在描述性信息.

        事实表中的记录条数据都比较多, 要为其设置复合主键和索引, 以实现数据的完整性和基于数据仓库的查询性能优化.

六. 元数据

        描述数据及其环境的数据. 两方面用途:

        首先, 元数据能够提供基于用户的信息, 如记录数据项的业务描述信息的元数据能帮助用户使用数据.

        其次, 元数据能支持系统对数据的管理和维护, 如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据.

        

        元数据机制主要支持一下五类系统管理功能:

              1.   描述哪些数据在数据仓库中;

              2.   定义要进入数据仓库中的数据和从数据仓库中产生的数据;

              3.   记录根据业务时间发生而随之进行的数据抽取工作时间安排;

              4.   记录并检测系统数据一致性的要求和执行情况;

              5.   衡量数据质量.

相关推荐