Tag - DataWarehouse

数据仓库 DataWarehouse    2017-04-20 12:49:46    1140

数据仓库的基础概念

面向主题

从下图可以看出,面向主题中的主题,可以看做我们常常设计维度的时候部分维度的抽象,如下图中,顾客活动和和顾客其实都是维度,但是是不同的特殊维度。
title

粒度

数据仓库中粒度化的数据是重用性的关键,因为它可以由众多的用户以不同方式使用。

举例:

就拿我们常用的日期维度来说,我们常常把日期维度分为“年、季度、月、周、日、小时”等,那么这里的“年、季度、月、周、日、小时”就是不同的六个粒度(相对时间上的),假设数据仓库中在时间上的粒度是日,那么就需要建立以日为最小分组统计的聚合表,在这个聚合表中,最小可以看到以日为单位的统计数据。
如果要查看周、月、季度、年的相关统计数据,就可以基于日的数据来进行进一步统计及计算。那么问题来了,如果我要看小时的数据怎么办,没有办法的,除非设计的最小粒度为小时。这就是数据的重用性。
当然,同一数据仓库中,对于同一纬度的不同level,也可以有相应粒度对应的数据,但是这样会造成数据的冗余;当然,也可以根据具体使用情景,决定是否需要这样的冗余(原书中说的是双重粒度,这里我更喜欢称为是多重粒度)。

数据的异构

title

报表是否必须在数据仓库中进行

这个答案是不一定的
1. 有些操作型报表需要的数据,在数据仓库中并不存在。
2. 即使操作型报表需要的数据,都会在数据仓库中存在,但是也许当时操作型数据库用到数据的同时,数据并未被归集到DS中(一般DS中的数据并不是实时的,而是定期通过ETL处理的),那么就会出现时数据错乱。

数据仓库中的错误数据如何处理

错误是难免的,一般错误出现的情况有如下几种:

  1. ETL过程设计错误
  2. 操作型数据库中的数据是先write后update的数据

解决办法

  1. 进入数据仓库中,找到相应的数据条目,将基础数据修改,并需要彻底找到所影响的条目,全部重新计算,否则会造成数据失去一致性。
  2. 加入修正条目,即先加入一条数据,抵消之前的错误数据,再插入正确的数据,然后将受到影响的条目全部重新计算,但是这样会造成一个问题,也许修正后,根本无法再进行重新计算。

设计数据仓库

元数据

元数据在数据仓库的上层,并且记录