说明:学习本文需要建立在对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过程,祝大家学习愉快,希望本文对你有所帮助!