说明:学习本文需要建立在对Integration Services基本了解的基础上,如果没有任何了解,请参考一步一步学习BI(1)-认识Integration Services
目标:将一个文本文件通过ETL工程导入到Execl文件中。
步骤:
1.新建一个IS工程。
2.双击“SSIS Packages”文件夹下的Package.dtsx文件(这个文件就是包文件)进入Control Flow的工作目录。
3.从左边的Toolbox中的Control Flow Items中拖拽Data Flow Task到工作区域。如下图所示:
4.双击这个从Control Flow Items从拽过来的Data Flow Task,进入到Data Flow工作面板中,注意工作区上方的Table菜单也跟着切换了。
5.在Data Flow工作区,我们从Toolbox中拽过来源数据和目标数据空间。既然是从文本文件导入到Execl文件,那么我们首先从Toolbox的Data Flow Sources中拽Flat File Source 到工作区,接着从Data Flow Destinations中拽Excel Destination到工作区。并将Flat File Source 的绿色箭头指向Excel Destination. 这样数据流程转换也就按照我们的想法建立好了,如下图所示。
6. 流程图画好了,但是现在实际的数据是没有的,同时我们也发现在Flat File Source 和Excel Destination上各有一个红色的小叉(表明在这个ETL中存在错误,数据转化会不成功的)。我们在进行开发的时候一定要非常注意这些明显的错误提示。
7.添加数据源,双击Flat File Source,后打开了Flat File Source Editor的窗口,如下图所示:
8.在Flat File Source Editor的窗口中选择新建一个Flat File connection manager(因为我们是第一次操作数据源,所以要新建,如果是之前建立过的话,那么在Flat File connection manager 的下拉菜单中会列出所有),弹出了Flat File connection manager Editor。 Connection manager name 取一个合适的名字,Descriptions中填写一个针对这个连接的描述信息。在File name点击Browse,在这里是要选择一个文件文件了,但是我们没有,没有新建一个吧。
9.打开Notepad,新建一个文本文件,命名为EtlTest.txt, 以UTF-8的格式保存到工程文件目录下,文本文件建立后如下图所示。
10.有了数据源了,现在从第8步中的Browse中我们刚才建立的这个文本文件。并在Code page中会自动识别为UTF-8格式的文本文件。在Header row Delimiter中我们选择以“,”分隔。
选择左边的Preview,就能看到我们的分隔后的数据了。如下图:
11.选择确认,确认回到了数据流设计的工作区域,发现我么前面提到的在Flat File Source 上的红色小叉没有了,也就是说通过正确添加数据源,数据源控件已经配置成功。接下来我们双击Excel Destination来编辑目标数据源。在Excel Destination Editor中的OLE DB connection manager中选择新建一个Excel 目标数据源。在弹出的Excel Connection Manager窗口中我们需要选择一个Excel文件,没有的话,Browse后在工程目录下新建一个并选择,回到Excel Connection Manager窗口 Excel Versions中会自动识别Excel版本类型。如下图所示。
12. 选择OK, 回到Excel Destination Editor 窗口中,在Name of the Excel Sheet中为此次数据导入选择Execl工作簿,我们选择新建一个工作簿,如下图所示。
完成后,确定回到工作流设计窗口,这个时候发现我们前面提到的在Excel Destination上的红色小叉并没有去掉。将鼠标移上去看看提示信息是什么……
发现是说:第0列的数据在类型转化的过程中类型不匹配。不能在unicode 和non-unicode之间进行数据类型转换。对与这种情况,我么需要进行一个中间转换。
13.从Toolbox中的Data Flow Transformations中拖拽一个Data Conversion到工作区,重新调整输入输出流。将Flat File Source的输出作为Data Conversion 的输入,将Data Conversion的输出作为Excel Destination的输入。目的就是通过Data Conversion 将数据转化成为符合要求的数据(在实际的工程应用当中,我们会有很多工作需要通过Data Flow Transformations中的工具进行数据转化后再给目标数据)。
14.双击Data Conversion组建,打开后如下图。Input Column 中选择需要处理的列名称,Output Alias是输出列的名称,Data Type中选者需要转换的类型。
15.转换组建配置完成后我们需要重新调整编辑我们的Excel Destination。在Excel DEstionation Editor中的Mappings中调整对应关系。我们将通过Data Conversion 的输出作为Input Column(输入列),这里我们还将第1列和第2列换了位置。
16.回到数据流设计窗口,发现这次在Excel DEstionation 组件上的红色小叉不见了,运行ETL。激动人心的时刻终于来了,全部绿色通过,正确运行,赶快打开Excel文件看看去吧。呵呵。
总结:通过本次实验我们基本掌握了Integration Services的基本原理和流程。在实际的BI项目当中,客户现在的数据可能是各种各样的:文本文件,Execl文件,各种数据库文件…,通过Integration Services都是可以将其提取出来的。提取出来之后,很多数据是没有什么价值的,我们想要的是从海量的数据中抽取有价值的符合我们要求的数据,那么这个过程就是转化,需要通过转化工具,算法等大量BI技巧来做这些事情,最后才是生成有价值的目标数据。
本文中工程下载:Integration Services Project1
下一次我们将进一步探讨稍微复杂一些的ETL过程,祝大家学习愉快,希望本文对你有所帮助!