[转]SSIS数据转换组件_派生列、审核、字符映射转换和条件性拆分转换
本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/04/14/2446925.html
一 派生列
派生列转换通过对输入列进行类型转换或应用表达式得出新的结果。这个结果可以作为新列添加,也可以替换输入列。可以使用此转换执行下列任务:
1.将不同列的数据连接到一个派生列中。例如,可以使用表达式 FirstName + " " + LastName 将 FirstName 和 LastName 列中的值组合到名为 FullName 的单个派 生列中。
2.通过使用 SUBSTRING 之类的函数从字符串数据中提取字符,然后将结果存储到派生列中。例如,可以使用表达式 SUBSTRING(FirstName,1,1) 从 FirstName 列提取人名的首字母。
3.对数值数据应用数学函数,然后将结果存储到派生列中。例如,可以使用表达式 ROUND(SalesTax, 2) 将数值列 SalesTax 的值更改为精确到小数点后两位。
4.创建比较输入列和变量的表达式。例如,可以使用表达式 ProductVersion == @Version? ProductVersion : @Version 来比较变量 Version 与 ProductVersion列中的数据,然后根据比较结果决定选用 Version 还是 ProductVersion 的值。
5.提取日期时间值的某部分。例如,可以通过表达式 DATEPART("year",GETDATE()) 使用 GETDATE 和 DATEPART 函数提取当前年份。
在上篇聚合转换文章中我们已经使用到了派生列。其配置如下:
在这图中,可以根据需求来进行一些设计。本图的设置为计算单个商品购买的总金额。
二 审核转换
审核转换控件配置很简单,它使得包中的数据流包含有关包运行所处环境的数据。例如可以将包的名称、计算机名称和操作员姓名添加到数据流中。该转换功能只以下系统变量。
|
值 |
说明 |
|
执行实例 GUID |
插入唯一标识包的执行实例的 GUID。 |
|
包 ID |
插入唯一标识包的 GUID。 |
|
包名称 |
插入包名称。 |
|
版本 ID |
插入唯一标识包版本的 GUID。 |
|
执行开始时间 |
插入包执行的开始时间。 |
|
计算机名称 |
插入启动包的计算机的名称。 |
|
用户名 |
插入启动包的用户的登录名。 |
|
任务名称 |
插入与审核转换相关联的数据流任务的名称。 |
|
任务 ID |
插入唯一标识与审核转换相关联的数据流任务的 GUID。 |
配置该转换功能如下步骤。
- 将审核转换控件按拖放到数据流任务中,并将上游的控件用绿色箭头连接起来。如图:

- 右键单击审核转换弹出窗口

- 单击审核类型下拉框。选中需要的系统变量。然后在输出列中设置输出的名称。得到如下结果:

配置好审核的系统变量,单击确定即可完成审核转换功能的配置信息。整个流程如下:

将转换的数据存放到C:\Users\zhuyujing\Desktop\test.txt。执行包.得到的结果如下:

三 字符映射表转换
字符映射表转换其实就是将字符串函数应用于输入列中的字符数据。该功能只对字符串数据类型的输入列执行。例如我们可以将字符转换为下写、大写、或则繁体等等。如下图所示

现在我们就演示一下将输入列中的NewName、PackageName分别转换为繁体和大写的,并将输入列NewName用转换后的繁体替换,创建一个新的列NewPackageName用于存储输入列PackageName映射的繁体字符。整个流程如下:

配置成功后执行包。可以看到没有转换之前,NewName和PageageName分别是简体和小写字符

转换后,NewName列中的数据变成繁体、packageName列对应的NewPackageName列都是大写字符。

四 条件性拆分转换
条件性拆分转换功能类似 C#编程语言中的swith…case 语句。此转换将计算表达式,并且根据计算的结果将数据行定向到不同输出中。此转换还提供一个默认输出,如何某个行与任何表达式都不匹配。则它将被定向到默认输出。例如,可以将销售订单总额在1000~3000之间的数据输出到一个路径,将销售订单总额在3000~7000之间的数据输入到一个路径,将销售订单总额>=7000的数据输出到一个路径。不满足以上条件的设置为默认条件。作为另外一条路径输出。在设置这些条件的同时还可以编辑输出列的名称。最终结果如下图:

配置好以后单击确定即可。为了检测结果。我们先在变量选项卡中设置如下几个变量

然后在数据流选项开中托动四个行计数转并修改名称。如图:

右键单击其中一个行计数,弹出窗口后,按如下图设置VariableName属性。本图已名为BadRowCount为例。其他行计数转换分别按同样的操作设置VariableName即可。

然后将刚才的条件性拆分转换与其中一个行计数用绿色箭头连接。弹出如下窗口
在输出下拉框中选中条件。然后单击确定按钮即可。如下图

其他三个行计数转换按此步骤操作即可。最总得到如下图:

执行该包,等到如下图所示的结果

[转]SSIS数据转换组件_派生列、审核、字符映射转换和条件性拆分转换的更多相关文章
- SSIS: Lookup组件高级用法,生成推断成员(inferred member)
将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式. 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式. 背景 比 ...
- kettle根据参数动态派生列
抽取数据的时候没有日期字段,需要根据抽取日期自动生成月份,如下图结构 表输入_参数部分,接收来自其他系统传过来的参数(JAVA程序或者页面),具体设置如图 在查询数据时候派生列 运行模型的时候,给参数 ...
- 《BI那点儿事》数据流转换——派生列
派生列转换通过对转换输入列应用表达式来创建新列值. 表达式可以包含来自转换输入的变量.函数.运算符和列的任意组合. 结果可作为新列添加,也可作为替换值插入到现有列. 派生列转换可定义多个派生列,任何变 ...
- 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler
第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...
- 组件_ UIToolbar
组件_ UIToolbar /** 1. 顶部toolbar 2. TextField可以以UIBarButtonItem的自定义视图的方式加入toolbar 3. 三个按钮 4. 将UIBarBu ...
- Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格
目录 一.概述 二.效果展示 三.实现思路 1.冻结行.冻结列 2.行高自适应 3.蚂蚁线 四.测试代码 1.添加表格数据 2.设置冻结行.列 3.行高.列宽 4.单元格背景色 5.单元格文字 6.其 ...
- SQL分组多列统计(GROUP BY后按条件分列统计)
as tjsl from fyxx group by zt,whbmbh end) as ybhsl from fyxx group by whbmbh 下面是摘自别人的博客 最近遇到一个问题,需要对 ...
- 【数据库】SQL分组多列统计(GROUP BY后按条件分列统计)
select whbmbh ,zt,1 as tjsl from fyxx group by zt,whbmbh select whbmbh,sum(case zt when '有效' then 1 ...
- excel中统计列中的值在其他列出现的次数多个条件
excel中统计列中的值在其他列出现的次数多个条件 =COUNTIFS(E2:E373,"=VIP经销商",J2:J373,K2) 解释 E列的第二行到第373行中值 等于 VIP ...
随机推荐
- 虚拟机 VMware Workstation12 安装Ubuntu系统
Ubuntu 系统是一款优秀的.基于GNU/Linux 的平台的桌面系统. 当然,目前为止很多应用程序还完全不能允许运行在 Ubuntu 系统上,而且 Ubuntu 的界面.使用方法会让大部分Wind ...
- POJ 2912 Rochambeau(种类并查集+枚举)
题目链接:http://poj.org/problem?id=2912 题目大意:n个人玩,玩石头剪刀布游戏,其中1人是裁判,剩下的n-1个人分为3组, 他们商量好了,相同组的人每次都出相同的手势,不 ...
- connect-falsh的用法
借鉴博客 http://yunkus.com/connect-flash-usage/
- javaScript存储
<1> 1.document对象提供了的cookie 2.Window对象提供了sessionStorage和localStorage两个存储对象来对网页的数据进行添加.删除.修改.查询操 ...
- maven创建springboot项目
1.new Project 2.选择spring Initializr 3.选择next,可以自定义group.artifact,type里可以选择maven也可以选择gradle 4.选择sprin ...
- 数据库的主从复制常用Xshell命令
mysql配置 1.设置数据库用户名和密码 mysqladmin -u root password "root" 2.打开3306端口号 iptables -I INPUT -p ...
- 将字符串顺序重新排序DOM节点
对于一个已有的HTML结构: Haskell JavaScript Python Ruby Scheme <!-- HTML结构 --> <ol id="test-list ...
- 戴尔笔记本Inspiron 7560(灵越) 加装固态硬盘从选购固态硬盘到系统迁移到设置SSD为第一启动(受不了了,网上的教程就没有完整的)
菜鸡我的笔记本为戴尔灵越Inpsiron 7560,其实Inspiron 15 7560 和Inspiron 7560是同一个型号. 电脑拆了安过内存条,换过电池,现在又加了一块固态硬盘. 因为不想安 ...
- php通过mysqli链接mysql数据库
首先,我们先来了解一下mysqli是什么,和mysql有什么区别? 1.mysqli是一个扩展库,是允许用户访问mysql4.1或更高版本所提供的功能: 1)mysqli连接是永久连接,而MySQL是 ...
- Xamarin Android真机测试报错
Xamarin Android真机测试报错 Xamarin Android真机测试报错,错误信息为INSTALL_CANCELLED_BY_USER.出现这个错误,通常都是真机上开发者选项设置错误 ...