欢迎来到天天文库
浏览记录
ID:57379230
大小:369.74 KB
页数:12页
时间:2020-08-14
《SSIS学习:数据流任务下.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SSIS学习():数据流任务(下)————————————————————————————————作者:————————————————————————————————日期:IntegrationServices学习(3):数据流任务(下)前一篇文章SSIS学习(2):数据流任务(上),介绍了如何创建一个简单的ETL包,如何通过一个简单的数据流任务,将一个文本文件的数据导入到数据库中去。这些数据都保持了它原有的本色,一个字符不多,一个字符地少导入,但是在实际应用过程中,可能很少有这种情况,就拿IisLog文件来说吧,其中包含有:请求成功的记录(
2、sc-Status=200),也有请求失败的记录;有网页(比如:*.aspx、*.htm、*.asp、*.php等)、有图片、有样式表文件(*.CSS)、有脚本文件(*.js)等,可谓是鲜花与毒草并存,精华与糟铂同居啊,我们如何根据不同的需求,把其中的鲜花与精华提炼出来呢,这就是我们今天要讲的重点:数据流转换。 在进行数据流转换之前,我们先介绍一下使用场景:以IISLOG为依据,进行网站点击率分析(IP&PV分析),具体需求如下: (1)分析一段时间内,网站点击率的变化趋势。同时还需要知道各个周未、各个节假日网站的流量情况。 (2)分析
3、一天内,各时段(以小时为单位)网站的压力情况。 (3)了解网站客户群分别来自哪些国家,哪些地区。 为了实现这些需求,我们建立了如下的数据模型,请看: 代码 下面,我们就一步一步地介绍,如何进行数据流转换,以达到上面的需求。 (一)、"条件性拆分(ConditionalSplit)"。相当于Sql语句的Where条件。这或许是所有数据流转换任务的第一步,为了减少后续处理的数据量,为了提高系统性能,先过滤掉不需要的记录。前面讲过,IisLog文件包括有各式各样的记录,而对本例需求来说,为了准确计算IP、PV数据,我们将如何过滤呢? (
4、1)、筛选出纯网页浏览记录。即*.aspx、*.htm(本网站只有这两种类型的网页文件)文件记录。 (2)、筛选出请求成功的记录(sc-Status=200)。 打开上一篇文件的SSISSolution,切换到数据流Tab,从左边工具箱中,打开“数据流转换”,找到“条件性拆分(ConditionalSplit)”组件,拖到数据流面板上,然后将“平面文件源”组件下的绿色箭头拖到“条件性拆分”组件上,双击“条件性拆分”组件,打开“条件性拆分转换编辑器”,如图: 在这个窗口,有系统变量、数据源列、系统函数这些资源可供使用。我们为了筛选出纯网页浏
5、览记录,需要从列cs_uri_stem中找到以.aspx、.htm、“/”结尾的页面链接。请分别在上图列表的“输出名称”栏位,输入“FormRecords”,在条件表达式栏位输入:RIGHT(cs_uri_stem,5) == ".aspx"
6、
7、 RIGHT(cs_uri_stem,4) == ".htm"
8、
9、 RIGHT(cs_uri_stem,1) == "/" 然后筛选请求成功的记录,其表过式为:sc_status == "200" 最后将两个表达式组合起来,即为:(RIGHT(cs_uri_stem,5) == ".aspx"
10、
11、
12、RIGHT(cs_uri_stem,4) == ".htm"
13、
14、 RIGHT(cs_uri_stem,1) == "/") && sc_status == "200" 如图所示: 点击确定.数据过滤就算大功告成了。 (二)、派生列(DerivedColumn),相当于SQL语句中的计算列,即根据其它列,按照一定的计算公式,派生出一个新列。在此例中,有三种情况需要用到派生列: (1)日期列,从log文件导入的日期、时间,为两个独立的字符串(varchar),而数据库中的对应字段为Datetime型,如果要想建立一种映射,则需要根据log文件的
15、Date、time字段,派生出一个Datetime型的字段。 (2)时间段,同理log文件中的Time为一字符串,需要取出其中的“小数(hour),才能与dimTime中的lngHour相匹配。 (3)IP,我们想根据客户IP,确定他所在国家、省市、地区。要达到这一需求,我想并不需要IP完全匹配,只要IP的前三段匹配,就可以确定了(没有考证过,个人感觉而已,如不妥,请指正),所以需要派生出一个ipSegment=IP的前三段,以此映射他所在的地区。 同理,从工具箱中,将“派生列”组件拖到“条件拆分”组件的下方,再将“条件拆分”组件下方的绿
16、色箭头拖到“派生列”组件上,系统会弹出一窗口,要求选择条件拆分的的输出名称,如图: 从下拉列表框中选择“FormRecords”,点击确定。 然后
此文档下载收益归作者所有