作者:此恨缠绵_793 | 来源:互联网 | 2023-10-10 15:27
本文转自:http:www.cnblogs.comgudujianxiaoarchive201204142446925.html一派生列派生列转换通过对输入列进行类型转换或应用
本文转自: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
函数提取当前年份。
在上篇>聚合转换文章中我们已经使用到了派生列。其配置如下:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/ff8b762299b1a433.jpeg"
>在这图中,可以根据需求来进行一些设计。本图的设置为计算单个商品购买的总金额。
二
审核转换
审核转换控件配置很简单,它使得包中的数据流包含有关包运行所处环境的数据。例如可以将包的名称、计算机名称和操作员姓名添加到数据流中。该转换功能只以下系统变量。
值 |
说明 |
执行实例 GUID |
插入唯一标识包的执行实例的 GUID。 |
包 ID |
插入唯一标识包的 GUID。 |
包名称 |
插入包名称。 |
版本 ID |
插入唯一标识包版本的 GUID。 |
执行开始时间 |
插入包执行的开始时间。 |
计算机名称 |
插入启动包的计算机的名称。 |
用户名 |
插入启动包的用户的登录名。 |
任务名称 |
插入与审核转换相关联的数据流任务的名称。 |
任务 ID |
插入唯一标识与审核转换相关联的数据流任务的 GUID。 |
配置该转换功能如下步骤。
- 将审核转换控件按拖放到数据流任务中,并将上游的控件用绿色箭头连接起来。如图:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/0ce46c570a421f64.jpeg">
- 右键单击审核转换弹出窗口
src="https://img8.php1.cn/3cdc5/1e70e/8fd/e587734a92a6604c.jpeg"
>
- 单击审核类型下拉框。选中需要的系统变量。然后在输出列中设置输出的名称。得到如下结果:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/6938651e59491a0b.jpeg"
>
配置好审核的系统变量,单击确定即可完成审核转换功能的配置信息。整个流程如下:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/97d6ca0873ae78f4.jpeg"
>
将转换的数据存放到C:\Users\zhuyujing\Desktop\test.txt。执行包.得到的结果如下:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/637e6a9b895dfc1c.jpeg">
三 >字符映射表转换
字符映射表转换其实就是将字符串函数应用于输入列中的字符数据。该功能只对字符串数据类型的输入列执行。例如我们可以将字符转换为下写、大写、或则繁体等等。如下图所示
现在我们就演示一下将输入列中的NewName、PackageName分别转换为繁体和大写的,并将输入列NewName用转换后的繁体替换,创建一个新的列NewPackageName用于存储输入列PackageName映射的繁体字符。整个流程如下:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/aa0917b50578eb2c.jpeg"
>
配置成功后执行包。可以看到没有转换之前,NewName和PageageName分别是简体和小写字符
src="https://img8.php1.cn/3cdc5/1e70e/8fd/03c57cea8465d3a5.jpeg"
>
转换后,NewName列中的数据变成繁体、packageName列对应的NewPackageName列都是大写字符。
src="https://img8.php1.cn/3cdc5/1e70e/8fd/ad18352d4e4f559a.jpeg"
>
四 条件性拆分转换
条件性拆分转换功能类似 C#编程语言中的swith…case
语句。此转换将计算表达式,并且根据计算的结果将数据行定向到不同输出中。此转换还提供一个默认输出,如何某个行与任何表达式都不匹配。则它将被定向到默认输出。例如,可以将销售订单总额在1000~3000之间的数据输出到一个路径,将销售订单总额在3000~7000之间的数据输入到一个路径,将销售订单总额>=7000的数据输出到一个路径。不满足以上条件的设置为默认条件。作为另外一条路径输出。在设置这些条件的同时还可以编辑输出列的名称。最终结果如下图:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/12dc9ce1e1756d00.jpeg"
>
配置好以后单击确定即可。为了检测结果。我们先在变量选项卡中设置如下几个变量
src="https://img8.php1.cn/3cdc5/1e70e/8fd/8f9bc95afbcd9de5.jpeg">
然后在数据流选项开中托动四个行计数转并修改名称。如图:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/dd880fc818274d18.jpeg">
右键单击其中一个行计数,弹出窗口后,按如下图设置VariableName属性。本图已名为BadRowCount为例。其他行计数转换分别按同样的操作设置VariableName即可。
src="https://img8.php1.cn/3cdc5/1e70e/8fd/cc3e08656409bed9.jpeg">
然后将刚才的条件性拆分转换与其中一个行计数用绿色箭头连接。弹出如下窗口src="https://img8.php1.cn/3cdc5/1e70e/8fd/2bb1a0adbb23c417.jpeg">
在输出下拉框中选中条件。然后单击确定按钮即可。如下图
src="https://img8.php1.cn/3cdc5/1e70e/8fd/1d34d08d9093c915.jpeg">
其他三个行计数转换按此步骤操作即可。最总得到如下图:
src="https://img8.php1.cn/3cdc5/1e70e/8fd/0b60c9b95b00e714.jpeg">
执行该包,等到如下图所示的结果
src="https://img8.php1.cn/3cdc5/1e70e/8fd/7735a9e244dd890f.jpeg">
[转]SSIS数据转换组件_派生列、审核、字符映射转换和条件性拆分转换,布布扣,bubuko.com