转载SSIS中的容器和数据流—数据转换(Transformations)续
数据挖掘请求
数据挖掘任务是SSIS中一个很重要的任务,它的思想来源于一些算法。数据挖掘请求运行数据挖掘请求,并将结果输出到数据流。它还可以添加一些预测新列,一些应用场合如下列举:
- 根据已知的一些列,例如子女个数,家庭收入,配偶收入预测产生一个新列:这个人是否拥有住房
- 根据客户购物卡预测客户的购买意向
- 可以填充用户的调查问卷上没有填写的空白栏
涉及到的算法有:
- 微软时序算法
- 微软决策树算法
- 微软线性回归算法
- 贝叶斯算法
模糊排序和查找
模糊排序task可以找出数据中可能重复的行,例如可以找出包含“Main St.”和“Main Street”的两行然后将他们合并成一行。模糊查找任务可以检查数据输入并清除脏数据。模糊查找任务通常放在查找任务之后,查找任务找到匹配数据,然后通过模糊查找没有匹配的数据。
查找
查找转换任务的功能类似于SQL Server 2000中的Data Pump任务。例如,如果数据中有一列ZipCode来自于导入数据中的两列State和City,在映射表中可以使用查找转换。在SQL Server 2000中这种功能很笨拙,必须使用join关联查找这样会使运行速度减慢。如图4-25是查找任务的编辑界面。
图4-25
合并
合并转换可以将两个路径中的输入数据合并成一个输出。这种转换类似于Union All转换,它有一些限制:
- 合并之前数据必须排序,可以在此之前使用排序转换或者在数据源中使用ORDER BY语句
- 合并的元数据类型必须相同,例如CustomerID不能在一个路径中是数字型的但是在另一个路径中是字符类型的
- 如果有多于两个路径,需要选择Union All转换
编辑这种task,确保在两个路径中的数据时一致的,选择列的时候会弹出对话框提示数据合并到路径1还是路径2,如果选择合并到路径1,然后连接路径2。这样选择之后如图4-26最终将会从一个路径映射到另一个路径,有些路径的数据也可以忽略。
图4-26
连接合并
SSIS的一个目标就是使用任务,尽量保证不写任何代码,一个典型的例子就是连接合并。这种合并可以将两个输入进行内连接或者外连接然后选择性地输出。例如,在一个数据流中存储着包含EmployeeID的人力资源信息,在另一个数据流中存储着工资清单信息,可以对这两个路径进行连接,从人力资源信息中取得姓名,从工资清单信息中取得员工工资,然后从一个路径中输出。如图4-27,可以看到通过连接合并分别缺的员工名字和入职日期。
图4-27
注意:如果两个输入路径在同一个数据库,在OLE DB数据源中进行数据连接操作可能效率更高,如果在不同的数据库中可能效率后受到影响。这种连接合并在两个数据不是同一个数据库中或者不想编写代码时会很有用。
多点传送Multicast
如同它的名字一样多点传送可以将一个路径中的数据输出到多个路径,如图4-28你可能会使用这种转换将数据输出到多个路径中。编辑这种task,将它和输入源连接,然后将它和多个Destination连接,除了task的名字之外,它没有特别的编辑选项。
图4-28
注意:多点传送类似于Split 转换,不同的是多点传送把所有的行都输出,Split将有条件地输出部分行。
OLE DB命令
OLE DB命令对数据流中的数据行执行一个OLE DB命令。它针对数据表中的每一行进行更新操作,可以事先将要更新的数据存放在表中。或者针对一个有输入参数的存储过程,可以将这些参数存放在一个数据表中,不用每次都输入参数。
百分比抽样和行抽样Percentage and Row Sampling
百分比抽样和行抽样可以从数据源中随机选择一组数据。这两种task都可以产生两组输出,一组是随机选择的,另一组是没有被选择的。可以将这些选择出的数据发送到开发或者测试服务器上。这个Task的最合适的应用是建立数据挖掘模型然后,使用这些抽样数据来验证这个模型。
编辑这种task,选择要抽取的行数或者 百分比,如图4-29。百分比抽样按百分比从数据源中随机选择数据,行抽样从数据源中随机选择具体的行数。可以对选中的数据和未被选择的数据命名。最后一个选择项是随机取样的参数。如果选择一个固定的参数,每次输出的结果是一样的,如果保持默认设置,就是不选择,每次将输出不同的数据。
图4-29
透视和逆透视
这个和T-SQL中的PIVOT和UNPIVOT的作用是一样的。数据透视转换可以将数据规范或使它在报表中更具可读性。数据的输出类似于OLAP中的数据输出和报表服务中的数据输出。下面的 表展示销售员工和每天的销售量。
转换后的数据如图
逆透视数据的功能和这个刚好相反。
数据行数
数据行数转换只是简单地计算数据流中的数据行数然后输出到一个变量中。常用的是将行数写到邮件中,然后将邮件发送给使用者报告转换了多少行数据。或者根据这个数据行数进行判断,进而进行相应的操作。
代码组件
代码组件允许编写代码充当转换transforms,数据源source,目的destination。使用代码组件可以完成下面的任务:
- 使用.net类库集验证保险卡号和邮件地址
- 验证数据并忽略掉不合理的数据。例如,在人力资源招聘系统中删除那些不符合薪水要求的应聘者
- 编写组件和第三方客户整合
代码组件可以作为多种输出的数据源,可以选择在运行时更加高效地编译。
代码组件允许编写代码充当转换transforms,数据源source,目的destination。使用代码组件可以完成下面的任务:
- 使用.net类库集中的Regex类验证保险卡号和邮件地址
- 验证数据并忽略掉不合理的数据。例如,在人力资源招聘系统中删除那些不符合薪水要求的应聘者
- 编写组件和第三方客户整合
代码组件可以作为多种输出的数据源,可以选择在运行时更加高效地编译。
渐变维度(Slow Change Dimesion)
Dimension修改可以更新或者修改数据仓库中的一个Dimension。使用修改向导,可以产生所有的更新和新建dimension任务。曾经这样的任务对于DTS开发人员来说是很繁琐的,现在只需要几分钟就可以完成。
排序
排序转换允许对数据流中的数据按照某一列进行排序。这是五个常用的转换之一。连接数据源打开编辑界面,编辑这种任务。不想设置为排序列的字段不要选中,默认情况下所有列都会选中。如图4-30,按照ProductID排序,并将所有列输出。
图4-30
在底部的表格中,可以设置输出列的别名,是否按照列来排序。Sort Order列显示列将会第一排序,第二排序还是第三排序。双击列去除重复的排序列。
关键词抽取和查找Term Extraction and Lookup
关键词抽取和查找从数据集中抽取关键词。例如,可以使用这种task从一系列文章中抽取关键词。另一个功能是分析公司内部电子邮件内容。这种任务目前只支持英文关键词抽取。
在关键词抽取中可以指定是抽取名词还是名词词组。例如“bicycle”会被抽取但是“the bicycle”将不会被抽取。这种任务有两种输出,关键词和抽取的结果。关键词是要匹配的关键词,抽取结果是成功匹配的次数。
关键词抽取可以输出预先匹配的行。例如,将一个邮件系统中的信息记录到数据库中,可以和邮件系统组合,自动记录有瑕疵的产品。将结果通过一个连接管理器指向一个表。
联合所有Union All
联合所有task的功能和合并正好相反,它将多个数据源中的合并成一个结果集。例如,如图4-31,将两个XML数据源中的数据合并成一个输出然后将数据送入到关键词抽取任务中。
图4-31
编辑这种转换,首先将第一个数据源连接到task然后将其他数据源连接到这个task。打开编辑界面,保证列被正确映射,DDIS将会自动适应是否正确映射。例如,一个输入字符是20个字符,另一个是50,出书将会是一个多于50个字符的列。
下一篇随笔中,将用一个例子来具体说明怎么使用转换任务。
转载SSIS中的容器和数据流—数据转换(Transformations)续的更多相关文章
- 转载SSIS中的容器和数据流—数据转换(Transformations)
对数据流来说按照需求将数据转换成需要的格式是数据操作中的一个关键的步骤.例如想要得到聚合排序后的运算结果,转换可以实现这种操作.和SQL Server 2000 DTS完全不同,这些操作不需要编写sc ...
- 转载SSIS中的容器和数据流—举例说明数据转换任务
在上一个随笔中我们熟悉了数据流任务,现在来做一个例子,通过实践学习这些介绍的内容.这个例子从AdventureWorks数据库中取得数据,然后对数据进行聚合,排序,计算产生新列操作并输入到一个.csv ...
- SSIS中出现数据流数据源假死状态的解决办法
相信开发过Sql Server SSIS的人都遇到过在数据流中数据源假死的问题,特别是Excel Source特别容易假死,当job执行到数据流中的Excel Source时,既不报错也不执行,也没有 ...
- [转]SSIS中的脚本—脚本任务
本文转自:http://www.cnblogs.com/tylerdonet/archive/2011/09/16/2179123.html 脚本任务主要用来控制数据流,当现有的控制流 任务不能满足复 ...
- 在没安装OFFICE的服务器SSIS中进行EXCEL的ETL操作!
由于OFFICE 2010的安装包比较庞大,如果仅仅为了在服务器中实现操作EXCEL,完全没有必要安装整个OFFICE,是否可以不装OFFICE也实现与OFFICE文件的互相操作呢?答案是肯定的,在S ...
- 微软BI 之SSIS 系列 - 在 SQL 和 SSIS 中实现行转列的 PIVOT 透视操作
开篇介绍 记得笔者在 2006年左右刚开始学习 SQL Server 2000 的时候,遇到一个面试题就是行转列,列转行的操作,当时写了很长时间的 SQL 语句最终还是以失败而告终.后来即使能写出来, ...
- 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据
开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...
- SQL点滴9—SQL Server中的事务处理以及SSIS中的内建事务
原文:SQL点滴9-SQL Server中的事务处理以及SSIS中的内建事务 我们可以把SSIS中的整个package包含在一个事务中,但是如果在package的执行过程中有一个表需要锁定应该怎么处理 ...
- SSIS中循环遍历组件[Foreach Loop Container]
背景 每月给业务部门提取数据,每个分公司都要提取一般,先跑SQL,再粘贴到Excel中,然后发邮件给相关的人员.费时费力,还容易粘贴错位.因此,需要通过一个程序完成这些步骤.我首先想到的是通过SSIS ...
随机推荐
- 【BZOJ 2300】 2300: [HAOI2011]防线修建 (动态凸包+set)
2300: [HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国上 ...
- Qt: 把内容写进字符串中与C++很相似(使用QTextStream包装QString)
#include <iostream>#include <QChar>#include <QFile>#include <QTextStream>#in ...
- Spring中的Resource
Spring中的资源定义:Resource此接口的全名为:org.springframework.core.io.Resource比较常用的资源定义的实现类为:1.ClassPathResource ...
- POJ2993——Emag eht htiw Em Pleh(字符串处理+排序)
Emag eht htiw Em Pleh DescriptionThis problem is a reverse case of the problem 2996. You are given t ...
- 页面滚动动态加载数据,页面下拉自动加载内容 jquery
<!DOCTYPE=html> <html> <head> < script src="js/jquery.js" type=" ...
- JS判断是否出现滚动条
http://www.cnblogs.com/yazdao/archive/2010/12/06/1897742.html 该博文是想用JS检测浏览器是否出滚动条. 这边想到一个比较取巧的方法, 假如 ...
- chrome和火狐获取资源
获取网站数据: chrome下获取网站数据可以用如下方式去获取: 而火狐则可以按以下方式获取: 在该目录下找到你想要的数据. 获取本地的数据: chrome下获取本地的数据: firefox下获取本地 ...
- 在Linux上运行C#
众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...
- Nhibernate与Dapper对比,及Nhibernate增删改和9种查询语法
1,Sql语法. NH:HQL Dapper:原生Sql. 点评:原生Sql可以直接放在数据库里执行,Hql不行,且Hql增加学习负担.(Hn也可以原生Sql,但好像用的不多呀) 2,开发速度. NH ...
- ZJOI2010网络扩容
无限orz hzwer神牛…… 第一问很简单,按数据建图,然后一遍最大流算法即可. 第二问则需要用最小费用最大流算法,主要是建图,那么可以从第一问的残留网络上继续建图,对残留网络上的每一条边建 ...