专注于中国的商业智能

导航

一步一步学习sqlserver BI--ETL设计

这节我们主要讲讲我的游戏交易数据分析项目的ETL(数据抽取、加载、转换)具体是怎么做的。
先来讲下源系统吧,因为我们的交易主站的服务器不是架在公司的,因此不能直接从源系统直接抽取数据了。事实上我们已经存在一个简单的数据分析系统了,只不过这个是以前人家做的,没有采用sqlserver2005的BI平台来做,而是直接写winform程序来弄的。原来的数据抽取是主站那边提供导出的excel文件过来,然后到我们这边,导入到我们的分析库中去。

好了,为了简便,事实上我只是在做一个demo,为以后项目做准备,所以我们抽取数据直接是从上面说的已经存在分析库中抽的,因为数据结构比较相近,所以ETL过程还是比较简单的。

先看看游戏维度表吧:
首先,我们来新建一个Integration Services项目。
接着,新建一个ImportDimGamePackage.dtsx的SSIS包。
拖放一个数据流任务到控制流面板上(如图)

双击数据流任务,来到数据流面板

接着我们拖动OLEDB源到数据流面板上,并且双击编辑它,新建一个连接和选择要抽取数据的源数据表。

然后我们拖动一个OLEDB目标到数据流面板上,把OLEDB源和OLEDB目标连接起来,并且双击编辑,新建一个连接和选择我们要存放数据的目标表


然后建立源表与目标表之间的映射。
所有的都弄好了,运行,OK,成功了。

接着部门维度和物品维度都跟这个差不多。时间维度是我新建的,暂时我用winform写了一个日期维度生成器。

下面就讲交易数据事实表,这个比维度稍微复杂一点点。因为源系统和目标系统数据结构很类似,所以我的ETL都是非常简单的,在实际项目中,能够有这么好的运气是不可能的,呵呵。

首先新建一个ImportFactGameTradeDataPackage.dtsx的SSIS包。
其他简单的步骤跟上面一样,我就讲讲不一样的地方。因为我在数据库设计的时候,各个维度都用了代理键,也就是说在我们的数据仓库里面的维度和事实表的外键关联都是通过代理键的,源系统中的键我们只不过用一个字段记录了下来。所以我们数据抽取过来的时候,要对源系统中的映射关系进行改变。
这里的关键就是我们在编辑数据流的时候,使用了一个叫做“查找”的组件。编辑好的数据流如图:

接下来我们详细讲下查找列是怎么用的,拿查找GameKey来讲把。
1。双击查找GameKey组件,在引用表面板上面选择好我们要查找的表,在这里就是我们数据仓库表中的游戏维度表。

2。在列面板里面建立要查找的字段跟源系统事实表的字段的映射。

3。把查找到的列作为新列添加,并取一个唯一的别名(在后面与OLEDB目标的时候建立映射的时候,会用到这里查找到的列)。

接着其他的几个维度代理键的查找都类似,OLEDB目标的字段映射跟维度表的导入类似。

好了,今天主要介绍了简单的Sqlserver2005 Integration Services的使用,今天涉及了到里面几个概念,数据流任务,OLEDB源,OLEDB目标,查找等。

下一节,我准备写一下使用Sqlserver2005 Analysis Services建立OLAP数据库的过程。

posted on 2008-04-23 09:43  李梦蛟  阅读(14407)  评论(9编辑  收藏  举报