SSIS中的脚本—表达式

简介: 表达式是使用一些元素组合起来产生一个唯一的值。这些元素包括变量,字面值,函数,存储过程和运算符。一个简答的表达式是1

表达式是使用一些元素组合起来产生一个唯一的值。这些元素包括变量,字面值,函数,存储过程和运算符。一个简答的表达式是1<2,它的结果是true。虽然表达式是从C语言中衍生出来,但是他们大小写不明感。

SSIS中很多的任务都支持表达式。所有的任务都支持使用表达式来配置属性。例如For Loop和Foreach Loop中可以使用表达式来设置循环条件,Derived Column任务可以使用表达式来定义输出。

  

动态属性

SSIS中通过表达式可以动态的执行转换任务。
右击任务选择编辑,打开编辑界面。在左方有一些归类标签,点击这些标签可以打开一类相关的属性。每一种任务都会有一个表达式标签,如图1

图1

  

在这个编辑框中有两个列,一个是表达式名字,一个是表达式的值。在表达式名字中可以打开一个下拉列表,在这个表中选择要用的表达式,之后就可以在值这个列中编辑一个表达式值。在编辑表达式值的时候也可以点击右边的园形按钮打开表达式值编辑器。如图2

图2

  

点击右边栏中表达式旁边的加号可以查看所有的表达式。点击文本框旁边的圆形按钮可以打开表达式编辑框,如图3

图3

  

这个编辑器非常强大,左边框中的树形结构罗列出要编辑的表达式。在右边框中的树形结构罗列了所有可以使用的表达是函数和操作符。点击一个函数或者操作符的时候在下方Description栏中将会自动展示一些解释说明。也可以直接点击想要的表达式或者表达式函数到编辑框中而不是手动键入。
在表达式编辑器中设置表达式,注意表达式的值要和表达式相符,例如如果选择DelayValidation属性,那么表达式的结果一定要是一个布尔类型。设置好之后可以店家Evaluate Expression来验证,如果不符则会弹出错误提示。例如我们输入字母a则会得到如图4的错误提示。

图4

  

  

任务中的表达式

在任务中也可以使用表达式。最典型的就是Derived Column任务。下面我们看看在Derived Column中我们如何使用。新建一个包,在Control Flow中拖放一个Data Flow Task,双击进入Data Flow,在其中拖放一个OLE DB数据源,选择视图[HumanResources].[vEmployee]。在Columns标签中只选择FirstName,MiddleName,LastName三个列。
添加一个Derived Column任务,把它和数据源连接起来。双击Derived Column打开编辑器,可以看到如图5的界面,这个界面可表达式编辑器非常的相似。不同的地方在表达式边界框中,这里不是一个文本框,而是一个用来编辑输出列的可以编辑的表格。

图5

  

在第一列中输入FullName,在Derived Column列中选择<add as new column>,最后在Expression这一列中输入如下的表达式:
FirstName + ""+ MiddleName + ""+ LastName
这个表达式非常的简单,只是将所有名字连接起来作为一个完整的名字,中间是偶那个空格隔开。
点击OK保存,关闭表达式编辑界面。添加一个平面文件或者是Excel格式的数据目的,把他和Derived Column连接起来。最后运行这个包。这里我们选择使用Excel格式的数据目的。运行成功之后可以看到如图6的结果。

图6

  

我们会发现FullName这一列中有一些列是空的,这是因为有一些人没有MiddleName,使得表达式的值有误,这样的结果不是我们希望的。我们需要判断MiddleName的值。打开表达式编辑器重新编辑如下:
FirstName + (ISNULL(MiddleName)? " ": " "+ MiddleName + " ") + LastName
这里使用ISNULL函数判断然后使用问号表达式来处理MiddleName。
这个函数是从C语言演化而来的。三元表达式和VB中的IIF函数很相似。最后保存关闭编辑器。最后查看Excel文件,这次每一行都都有一个值,如图7

图7

  

新的表达式语言为SSIS提供了强大的功能,使用起来更加便捷。更加详细的介绍在SQL Server 2008联机丛书中可以找到。

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

目录
相关文章
|
3月前
|
SQL 关系型数据库 数据库
Python执行PostgreSQL数据库查询语句,并打印查询结果
本文介绍了如何使用Python连接和查询PostgreSQL数据库。首先,确保安装了`psycopg2`库,然后创建数据库连接函数。接着,展示如何编写SQL查询并执行,例如从`employees`表中选取所有记录。此外,还讨论了处理查询结果、格式化输出和异常处理的方法。最后,提到了参数化查询和事务处理以增强安全性及确保数据一致性。
Python执行PostgreSQL数据库查询语句,并打印查询结果
|
Java
表达式脚本
表达式脚本
83 0
|
SQL 存储 关系型数据库
《懒人Shell脚本》之六——一键构造待采集批量sql语句
1、需求 采集任务构造入库。实现200多个网站的标题、时间、内容等信息的采集信息配置,并插入mysql中
193 0
《懒人Shell脚本》之六——一键构造待采集批量sql语句
|
测试技术
F#库FParsec解析表达式
本文用F#解析器库FParsec对数学公式进行解析,如将(x+2)^7 => Pow (Add (Var "x", CstF 2.0), CstF 7.0),此转换操作对于数学公式的后续推导以及求值等都具有重要的作用。
949 0
F#库FParsec解析表达式
|
SQL 存储 缓存
根据运算符优先级解析SQL规则表达式
根据运算符优先级解析SQL规则表达式 目录 1.需求 2.知识准备 2.1 运算符优先级解析 2.2 流程分析 3.解决方案 3.1 思路1 3.2 思路2   正文 回到顶部 1.需求 测试数据库使用Greenplum,生产库使用GBase 普通表:存储客户数据,千万级别,结构如下 stat_date代表日期;user_id代表用户id;serial_number代表手机号;A_I72和A_I59是标签字段。
1582 0