视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
BI笔记之---增量方式处理数据集
2020-11-09 10:14:52 责编:小采
文档


本文将模拟一个数据仓库系统,其中有用户数据,产品数据以及订单数据。根据这些数据结构建立数据集,并且以增量更新的方式对其进行处理。之所以强调增量的方

本文将模拟一个数据仓库系统,其中有用户数据,产品数据以及订单数据。根据这些数据结构建立数据集,并且以增量更新的方式对其进行处理。

之所以强调增量的方式,是考虑到事实表中数据的增长,假设以后增长到几十亿,全量处理就变得很不现实,所以方案中着重演示以增量方式处理数据集的方案。

增量处理数据集的关键是要将事实数据分为两部分处理,一个是增量事实表,一个是历史事实表,数据集第一次处理历史事实表中的数据,以后每次周期性的处理都是处理增量表中的数据。

本文中提及的SQLServer和Visual Studio都是2008版本,2005版本同样也适用。

数据假设:一张用户表,一张产品表,一张订单表,订单里记录的是谁买了什么。数据集统计的需求就是根据订单统计谁买过什么。

首先,建立数据仓库,在数据引擎下新建BIDemo库。

接下来建立用户表,结构如下:

此外还有产品表:

以及历史订单表和建立增量订单表,它们的结构是一样的:

为了测试方便,空间,我们在用户表中加入一些测试数据:

然后在产品表中加入一些测试数据

至于事实表,手动加入测试数据就不现实了,所以这里写了一个程序利用随机数来灌测试数据:

这个程序的代码可以在本文中找到。生成后的数据基本如下所示:

到此,测试的数据结构以及数据就已经准备好了,相当于有了一个小型的数据仓库。

接下来在Visual Studio中建立BI解决方案,方案下分为一个SSIS项目和一个SSAS项目。

在SSAS项目下建立数据源和数据源视图,这里需要注意的是,事实表用历史表,而不是增量表,尽管其还没有数据。

首先建立数据源,连接刚才建立的数据库,并且在数据源视图里定义好关系,虚拟主机,如下图:

然后,根据此数据源视图建立数据集,需要注意的是,度量选择历史表,维度选择用户和产品两个表。

最后,部署数据集。这里只部署就可以了,不需要处理,处理任务将在以后的SSIS包中处理。

下面来看SSIS项目。在SSIS包里建立四个任务模块,类型分别如下:

前两个数据集处理模块是用来处理数据集的,数据流负责把增量事实表的数据导到历史事实表中,最后执行一个SQL任务把增量表中的数据删除。

两个数据集模块,前一个是专门处理维度,第二个是处理cube。这里之所以要把数据集维度处理单独拿出来放在前面,是因为在笔者经验中,对数据集的处理虽然是全部处理,但是新增维度的数据不会被聚合到其中,所以需要单独拿出来放在前面处理。

(题外话:对于这个地方笔者一直也不是很理解,按理说既然是全部处理那么怎么连维度都不处理呢,还需要单拿出来)

以下是设置维度处理模块,在界面中选择维度即可。

然后是cube处理模块,如下图。

然后指定增量更新,并且配置增量更新的数据表,这里指定增量表。

数据集处理完成之后就可以把增量表的数据放到历史表中了,以保证第二天加入的数据都是增量数据。

需要注意的是,在实际的运行当中,一定要保证BI的处理过程时业务系统没有发生数据,否则就会造成数据遗漏而导致不平。所以,BI的处理一般都是在凌晨。

然后是第三步的数据流模块,此部分的主要任务是将增量表的数据转移到历史表中。

最后的一个SQL任务是一个Delete或者Truncate table任务,把增量表里的数据清空。

最终的任务流程如下图:

执行包,全部成功之后应该如下图所示:

执行成功后,打开历史表,可以发现数据已经在里面了,而且增量表中的数据已经不存在了。

查询数据集,可以看到新的数据被聚合到其中。

通过以上透视表可以清晰的看到谁买了什么样的产品。

再次运行Rubbish往增量表里灌几条数据,然后重新运行此SSIS包,可以发现新增的数据已经被聚合到数据集中了,注意处理的方式是增量的。

本文提及的数据结构模型都很简单,主要介绍的是数据集处理的流程以及方法,重点阐述增量部分的方案,以及需要注意的问题。希望有知道更好方法的兄弟一起交流探讨。

本文提及的相关数据库,项目文件以及程序下载

FAQ:

1.增量数据是怎么来的?

笔者个人认为这个需要跟业务系统配合来做,比如加入触发器等。或者通过时间戳,到业务系统中能提取到。

2.如果有更新和删除怎么办?

下载本文
显示全文
专题