SSIS中的容器和数据流—数据转换(Transformations)续

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在上一篇随笔中列举了部分Data Flow中的数据转换任务,这里继续剩余的转换任务。   数据挖掘请求 数据挖掘任务是SSIS中一个很重要的任务,它的思想来源于一些算法。数据挖掘请求运行数据挖掘请求,并将结果输出到数据流。

在上一篇随笔中列举了部分Data Flow中的数据转换任务,这里继续剩余的转换任务。

 

数据挖掘请求

数据挖掘任务是SSIS中一个很重要的任务,它的思想来源于一些算法。数据挖掘请求运行数据挖掘请求,并将结果输出到数据流。它还可以添加一些预测新列,一些应用场合如下列举:

  • 根据已知的一些列,例如子女个数,家庭收入,配偶收入预测产生一个新列:这个人是否拥有住房
  • 根据客户购物卡预测客户的购买意向
  • 可以填充用户的调查问卷上没有填写的空白栏

涉及到的算法有:

  • 微软时序算法
  • 微软决策树算法
  • 微软线性回归算法
  • 贝叶斯算法

 

模糊排序和查找

模糊排序task可以找出数据中可能重复的行,例如可以找出包含“Main St.”和“Main Street”的两行然后将他们合并成一行。模糊查找任务可以检查数据输入并清除脏数据。模糊查找任务通常放在查找任务之后,查找任务找到匹配数据,然后通过模糊查找没有匹配的数据。

 

查找

查找转换任务的功能类似于SQL Server 2000中的Data Pump任务。例如,如果数据中有一列ZipCode来自于导入数据中的两列State和City,在映射表中可以使用查找转换。在SQL Server 2000中这种功能很笨拙,必须使用join关联查找这样会使运行速度减慢。如图4-25是查找任务的编辑界面。

img_0c13b58b78ed4c1eff3c861bdd82a71d.png

图4-25 

合并

合并转换可以将两个路径中的输入数据合并成一个输出。这种转换类似于Union All转换,它有一些限制:

  • 合并之前数据必须排序,可以在此之前使用排序转换或者在数据源中使用ORDER BY语句
  • 合并的元数据类型必须相同,例如CustomerID不能在一个路径中是数字型的但是在另一个路径中是字符类型的
  • 如果有多于两个路径,需要选择Union All转换

编辑这种task,确保在两个路径中的数据时一致的,选择列的时候会弹出对话框提示数据合并到路径1还是路径2,如果选择合并到路径1,然后连接路径2。这样选择之后如图4-26最终将会从一个路径映射到另一个路径,有些路径的数据也可以忽略。

img_e49a48eec15099f9c2aaa60bd4f8b988.png

图4-26

 

连接合并

SSIS的一个目标就是使用任务,尽量保证不写任何代码,一个典型的例子就是连接合并。这种合并可以将两个输入进行内连接或者外连接然后选择性地输出。例如,在一个数据流中存储着包含EmployeeID的人力资源信息,在另一个数据流中存储着工资清单信息,可以对这两个路径进行连接,从人力资源信息中取得姓名,从工资清单信息中取得员工工资,然后从一个路径中输出。如图4-27,可以看到通过连接合并分别缺的员工名字和入职日期。

 img_c443bb08508d4e6a51fb4941afa542e0.png  

图4-27

注意:如果两个输入路径在同一个数据库,在OLE DB数据源中进行数据连接操作可能效率更高,如果在不同的数据库中可能效率后受到影响。这种连接合并在两个数据不是同一个数据库中或者不想编写代码时会很有用。

  

多点传送Multicast

如同它的名字一样多点传送可以将一个路径中的数据输出到多个路径,如图4-28你可能会使用这种转换将数据输出到多个路径中。编辑这种task,将它和输入源连接,然后将它和多个Destination连接,除了task的名字之外,它没有特别的编辑选项。

img_a253e064af657997fd003e24732cea5b.png

图4-28

注意:多点传送类似于Split 转换,不同的是多点传送把所有的行都输出,Split将有条件地输出部分行。

  

OLE DB命令

OLE DB命令对数据流中的数据行执行一个OLE DB命令。它针对数据表中的每一行进行更新操作,可以事先将要更新的数据存放在表中。或者针对一个有输入参数的存储过程,可以将这些参数存放在一个数据表中,不用每次都输入参数。

  

百分比抽样和行抽样Percentage and Row Sampling

百分比抽样和行抽样可以从数据源中随机选择一组数据。这两种task都可以产生两组输出,一组是随机选择的,另一组是没有被选择的。可以将这些选择出的数据发送到开发或者测试服务器上。这个Task的最合适的应用是建立数据挖掘模型然后,使用这些抽样数据来验证这个模型。

编辑这种task,选择要抽取的行数或者 百分比,如图4-29。百分比抽样按百分比从数据源中随机选择数据,行抽样从数据源中随机选择具体的行数。可以对选中的数据和未被选择的数据命名。最后一个选择项是随机取样的参数。如果选择一个固定的参数,每次输出的结果是一样的,如果保持默认设置,就是不选择,每次将输出不同的数据。

img_d9d8e5520aada8e7036f5ece12e4bc5a.png

图4-29

  

透视和逆透视

这个和T-SQL中的PIVOT和UNPIVOT的作用是一样的。数据透视转换可以将数据规范或使它在报表中更具可读性。数据的输出类似于OLAP中的数据输出和报表服务中的数据输出。下面的 表展示销售员工和每天的销售量。

img_95243d0a90f60aab353407da3213e2e9.png

转换后的数据如图

img_0fad4d531f04e36e51d5f4e83291b4a7.png

逆透视数据的功能和这个刚好相反。

  

数据行数

数据行数转换只是简单地计算数据流中的数据行数然后输出到一个变量中。常用的是将行数写到邮件中,然后将邮件发送给使用者报告转换了多少行数据。或者根据这个数据行数进行判断,进而进行相应的操作。

  

代码组件

代码组件允许编写代码充当转换transforms,数据源source,目的destination。使用代码组件可以完成下面的任务:

  • 使用.net类库集验证保险卡号和邮件地址 
  • 验证数据并忽略掉不合理的数据。例如,在人力资源招聘系统中删除那些不符合薪水要求的应聘者 
  • 编写组件和第三方客户整合 
代码组件可以作为多种输出的数据源,可以选择在运行时更加高效地编译。

代码组件允许编写代码充当转换transforms,数据源source,目的destination。使用代码组件可以完成下面的任务:

·         使用.net类库集中的Regex类验证保险卡号和邮件地址

·         验证数据并忽略掉不合理的数据。例如,在人力资源招聘系统中删除那些不符合薪水要求的应聘者

·         编写组件和第三方客户整合

代码组件可以作为多种输出的数据源,可以选择在运行时更加高效地编译。

  

渐变维度(Slow Change Dimesion)

Dimension修改可以更新或者修改数据仓库中的一个Dimension。使用修改向导,可以产生所有的更新和新建dimension任务。曾经这样的任务对于DTS开发人员来说是很繁琐的,现在只需要几分钟就可以完成。

  

排序

排序转换允许对数据流中的数据按照某一列进行排序。这是五个常用的转换之一。连接数据源打开编辑界面,编辑这种任务。不想设置为排序列的字段不要选中,默认情况下所有列都会选中。如图4-30,按照ProductID排序,并将所有列输出。

img_2d65347a569075955415602219eb61ee.png

图4-30

在底部的表格中,可以设置输出列的别名,是否按照列来排序。Sort Order列显示列将会第一排序,第二排序还是第三排序。双击列去除重复的排序列。

  

关键词抽取和查找Term Extraction and Lookup

关键词抽取和查找从数据集中抽取关键词。例如,可以使用这种task从一系列文章中抽取关键词。另一个功能是分析公司内部电子邮件内容。这种任务目前只支持英文关键词抽取。

在关键词抽取中可以指定是抽取名词还是名词词组。例如“bicycle”会被抽取但是“the bicycle”将不会被抽取。这种任务有两种输出,关键词和抽取的结果。关键词是要匹配的关键词,抽取结果是成功匹配的次数。

关键词抽取可以输出预先匹配的行。例如,将一个邮件系统中的信息记录到数据库中,可以和邮件系统组合,自动记录有瑕疵的产品。将结果通过一个连接管理器指向一个表。

  

联合所有Union All

联合所有task的功能和合并正好相反,它将多个数据源中的合并成一个结果集。例如,如图4-31,将两个XML数据源中的数据合并成一个输出然后将数据送入到关键词抽取任务中。

img_930c11e2b4af530d2213f505681d1af8.png

图4-31

编辑这种转换,首先将第一个数据源连接到task然后将其他数据源连接到这个task。打开编辑界面,保证列被正确映射,DDIS将会自动适应是否正确映射。例如,一个输入字符是20个字符,另一个是50,出书将会是一个多于50个字符的列。

  

下一篇随笔中,将用一个例子来具体说明怎么使用转换任务。

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

目录
相关文章
|
3月前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
本文介绍了Twaver HTML5中数据的批量加载方法,通过使用`box.startBatch()`可以在大量数据加载时提高性能。文章通过示例代码展示了如何在React组件中使用批量加载功能,以减少界面重绘次数并提升效率。
59 2
Twaver-HTML5基础学习(20)数据容器(3)_数据的批量加载(节省性能方法)
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
49 1
|
3月前
|
XML 移动开发 JSON
Twaver-HTML5基础学习(18)数据容器(1)_增删查改、遍历数据容器、包含网元判断
本文介绍了Twaver HTML5中的数据容器(DataBox),包括如何进行增删查改操作、遍历数据容器以及判断网元是否存在于数据容器中。DataBox用于管理所有的网元对象,如ElementBox、LayerBox、AlarmBox等,并通过示例代码展示了其常用方法的使用。
48 1
Twaver-HTML5基础学习(18)数据容器(1)_增删查改、遍历数据容器、包含网元判断
|
3月前
|
存储 索引 Python
python中的数据容器
python中的数据容器
|
4月前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
4月前
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
|
5月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
520 5
docker常用命令大全(基础、镜像、容器、数据卷)
|
4月前
|
监控 安全 网络安全
|
5月前
|
存储 C++ 容器
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
58 5
|
4月前
|
域名解析 Kubernetes 负载均衡
在K8S中,外部访问容器服务,比如说提供了一个域名,链路怎么走?数据经过哪些组件?
在K8S中,外部访问容器服务,比如说提供了一个域名,链路怎么走?数据经过哪些组件?