本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/04/14/2446925.html

一 派生列

派生列转换通过对输入列进行类型转换或应用表达式得出新的结果。这个结果可以作为新列添加,也可以替换输入列。可以使用此转换执行下列任务:

  1.将不同列的数据连接到一个派生列中。例如,可以使用表达式 FirstName + " " + LastName 将 FirstNameLastName 列中的值组合到名为 FullName 的单个派                    生列中。

  2.通过使用 SUBSTRING 之类的函数从字符串数据中提取字符,然后将结果存储到派生列中。例如,可以使用表达式 SUBSTRING(FirstName,1,1) 从 FirstName 列提取人名的首字母。

  3.对数值数据应用数学函数,然后将结果存储到派生列中。例如,可以使用表达式 ROUND(SalesTax, 2) 将数值列 SalesTax 的值更改为精确到小数点后两位。

  4.创建比较输入列和变量的表达式。例如,可以使用表达式 ProductVersion == @Version? ProductVersion : @Version 来比较变量 VersionProductVersion列中的数据,然后根据比较结果决定选用 Version 还是 ProductVersion 的值。

  5.提取日期时间值的某部分。例如,可以通过表达式 DATEPART("year",GETDATE()) 使用 GETDATE 和 DATEPART 函数提取当前年份。

在上篇聚合转换文章中我们已经使用到了派生列。其配置如下:

在这图中,可以根据需求来进行一些设计。本图的设置为计算单个商品购买的总金额。

二 审核转换

审核转换控件配置很简单,它使得包中的数据流包含有关包运行所处环境的数据。例如可以将包的名称、计算机名称和操作员姓名添加到数据流中。该转换功能只以下系统变量。

说明

执行实例 GUID

插入唯一标识包的执行实例的 GUID。

包 ID

插入唯一标识包的 GUID。

包名称

插入包名称。

版本 ID

插入唯一标识包版本的 GUID。

执行开始时间

插入包执行的开始时间。

计算机名称

插入启动包的计算机的名称。

用户名

插入启动包的用户的登录名。

任务名称

插入与审核转换相关联的数据流任务的名称。

任务 ID

插入唯一标识与审核转换相关联的数据流任务的 GUID。

配置该转换功能如下步骤。

  1. 将审核转换控件按拖放到数据流任务中,并将上游的控件用绿色箭头连接起来。如图:

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

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

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

将转换的数据存放到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数据转换组件_派生列、审核、字符映射转换和条件性拆分转换的更多相关文章

  1. SSIS: Lookup组件高级用法,生成推断成员(inferred member)

    将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式. 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式. 背景 比 ...

  2. kettle根据参数动态派生列

    抽取数据的时候没有日期字段,需要根据抽取日期自动生成月份,如下图结构 表输入_参数部分,接收来自其他系统传过来的参数(JAVA程序或者页面),具体设置如图 在查询数据时候派生列 运行模型的时候,给参数 ...

  3. 《BI那点儿事》数据流转换——派生列

    派生列转换通过对转换输入列应用表达式来创建新列值. 表达式可以包含来自转换输入的变量.函数.运算符和列的任意组合. 结果可作为新列添加,也可作为替换值插入到现有列. 派生列转换可定义多个派生列,任何变 ...

  4. 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler

    第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...

  5. 组件_ UIToolbar

    组件_ UIToolbar  /** 1. 顶部toolbar 2. TextField可以以UIBarButtonItem的自定义视图的方式加入toolbar 3. 三个按钮 4. 将UIBarBu ...

  6. Qt高仿Excel表格组件-支持冻结列、冻结行、内容自适应和合并单元格

    目录 一.概述 二.效果展示 三.实现思路 1.冻结行.冻结列 2.行高自适应 3.蚂蚁线 四.测试代码 1.添加表格数据 2.设置冻结行.列 3.行高.列宽 4.单元格背景色 5.单元格文字 6.其 ...

  7. SQL分组多列统计(GROUP BY后按条件分列统计)

    as tjsl from fyxx group by zt,whbmbh end) as ybhsl from fyxx group by whbmbh 下面是摘自别人的博客 最近遇到一个问题,需要对 ...

  8. 【数据库】SQL分组多列统计(GROUP BY后按条件分列统计)

    select whbmbh ,zt,1 as tjsl from fyxx group by zt,whbmbh select whbmbh,sum(case zt when '有效' then 1 ...

  9. excel中统计列中的值在其他列出现的次数多个条件

    excel中统计列中的值在其他列出现的次数多个条件 =COUNTIFS(E2:E373,"=VIP经销商",J2:J373,K2) 解释 E列的第二行到第373行中值 等于 VIP ...

随机推荐

  1. 19:django 分页

    分页是网站中比较常见的应用,django提供了一些类帮助管理分页的数据,这些类都位于django.core.paginator.py文件里面 分页类 构造函数 class Paginator(obje ...

  2. 【python】msgpack使用

    1.存储数据 import msgpack var={'a':'this','b':'is','c':'a test'} with open('file.name','wb') as f: msgpa ...

  3. 事务管理配置与@Transactional注解使用

    spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framewor ...

  4. Spring学习(二)——Spring中的AOP的初步理解

    [前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...

  5. .net core 2.0使用NLog写日志文件

    原文地址:传送门 之前也看了 linezero 大佬写的教程,但是总是没有成功写入日志文件.按照 曲廉卿 的已成功,以下正文: 最近研究了一下NLog的使用方式,简单的入了一下门. 实现的功能,对于不 ...

  6. TCP握手协议简述

    TCP握手协议简述在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器 ...

  7. 7.spark Streaming 技术内幕 : 从DSteam到RDD全过程解析

    原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/)   上篇博客讨论了Spark Streaming 程序动态生成Job的过程,并留下一个疑问: ...

  8. npoi的用法,动态的判断单元格的大小,设置列的宽度

    public MemoryStream GridToExcelByNPOI(DataTable dt, string strExcelFileName) { HSSFWorkbook wk = new ...

  9. ZOJ 1610.Count the Colors-线段树(区间染色、区间更新、单点查询)-有点小坑(染色片段)

    ZOJ Problem Set - 1610 Count the Colors Time Limit: 2 Seconds      Memory Limit: 65536 KB Painting s ...

  10. python的递归函数

    1.如果一个函数在内部调用自身本身,这个函数就是递归函数. 例:计算 n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 ...