变量和表达式
变量,作为程序员的我们,是一个多么熟悉的概念,从开始学习编程的第一天起,就要了解什么是变量?如何定义一个变量?变量的使用范围等。现在还有必要在这里大费口舌来讨论“变量”吗?不错,我们今天谈的变量,也脱离不了这个范畴:如何定义一个变量?如何使用变量?变量的使用范围等。但是在ETL的发展过程中,从以前Sql Server 97、Sql Server 2000的DTS到后来的Sql server Integration Services 2005 ,再到现在的Sql Server Integration Services 2008,变量也发生了巨大的变化,其作用也变得越来越重要了。SSIS 包中各组件原本是想互独立,彼此分割的,就需要通过变量来进行信息传递与交流。就象生活在这座城市中的我们,回家同居一小区,出门同乘一班车,但是老死不相往来,每日相逢不相识,彼此从不沟通,从不交流。现在突然来了一位美丽的使者(Variable),挨门挨户地传递信息,把大家凝聚在一起,彼此的沟通和交流多起来了,从此这个小区就变得热闹起来,相互间和谐多了。
Integration Services 中的变量,同其它编程语言中的变量非常相似----它们都是用于临时存储数据。但是也有一些区别:Integration Services 变量,它还是一个对象,有自已的属性(property),有自已的响应事件。下面我们就看看如何定义变量。
打开Integration Services Solution ,打开菜单SSIS(S)---变量(S),就会弹出如图所示的窗口。
从这个窗口中,我们可以明白变量以下几方面的情况:
(1)、变量的分类,在Integration Services 中,变量有两种类型:系统变量和用户自定义变量。其中系统变量,比如:TaskID,TaskName,CreateName,CreateDate等,提供包运行时的一些基本属性,可供包中的组件或者代码使用。这些变量一般是只读的,在运行的过程中,根据包的运行环境默认生成,不可以修改。而自定义变量呢?两种情况都可以定义了:只读、读写。
(2)、变量的作用域。有基于包的全局变量,也有基于某一组件的局部变量。这与以前的DTS有较大的差异,以前DTS包中的变量,都是基于包的全局变量。
(3)、变量的名称、变量的数据类型、默认值等与其它编程语言没有什么差异,在此就不多说了。
(4)、Raise Change Event 。这是Integration Services 的一个新属性。它是一个Bool 值,如果其值为True,每当变量的值发生改变,VariableValueChangedEvent 将会响应,否则,这个事件将不会响应。(SSIS中的事件,以后会讲到,这里暂不深入).
除了上面提到的这些属性外,变量还有一个重要的属性--变量的可继承性。前面提到变量有全局变量与局部变量,而局部变量是针对某一个组件可见的变量,但是Integration Services 中的组件是分层的,即有祖先级组件,也有子孙级组件,那么子孙组件就会继承祖先组件的变量,可以引用,可以修改,也可以触发变量VariableValueChangedEvent 事件。如图:
二、表达式。
前面讲述了表变量的定义、变量的命名空间、变量的作用范围等,但是却没有提及如何使用变量。这就是我们这一节要介绍的内容--表达式。
“在SSIS解决方案中,对于表达式的强大功能怎么表述都不过分。在SSIS中,我最喜欢的功能就是表达式”--Jamie Thomson
正如Jamie 所言,表达式的功能在SSIS简直是太强大了,组件的属性、变量、优先级约束、For/Foreach循环容器等,都可以用表达式进行设置。从而使用包变得更加强大、灵活。下面我们将讲一讲常见的几种表达式的应用。
(一)、属性表达式。
在Integration Services 中,大多数组件都有Expressions 这个属性,如图:
Expressions 就是为组件定义表达式的属性,点击“...”按钮,打开“属性表达式编辑器”对话框,如图:
我们可以简单地比较一下,一个文本文件连接对象,基本上大多数属性都可以通过表达式来定义,这就是它的强大的之处。表达式的定义,也非常方便,有一个功能全面的“表达式生成器”窗口,如图:
这个窗口有四个区域,左上角为“变量”区域,包含了全局变量和该对象可见的局部变量。右上角为“函数”和“运算符”区域,中间为表达式编辑区域,下面为表达式结果显示区,每当一个表达式定义完成,我们为了验证表达式定义是否正确,点击“计算表达式”按钮,就可以模拟计算出表达式的结果。请大家别小看了这个按钮,在Debug 表达式时,非常有用哦。
(二)、变量表达式。
变量表达式的定义同属性表达式的定义完全相同,选择变量的“Expressions ”属性,打开属性编辑器,进行编辑即可。
(三)、优先约束表达式。
一般在控制流中有多个任务组件,比如有Script 任务,有数据流任务,有SQL脚本任务等,我们有时并不需要这些任务全部都要执行,而是需要根据前面一个任务的执行结果,动态地决定后面的任务是否执行,这就需要用到优先约束表达式。如图:
优先约束控制着包的工作流,它会判断包的约束是否满足,然后再按照约束条件来选择包是继续运行,还是停止运行。在以前的DTS中,优先约束仅限于前面的任务是“成功”、“失败”、“完成”这三种状态,而现在除了以上三种状态外,还多了一个“表达式和约束”,即我们可以通过定义表达式来定义约束,比如上图所示,如果我们需要定义当错误数量超过5次以后,包才失败,停止运行。这就要用到表达式约束了。
(四)、循环容。
“For 循环”是一个容器组件,它可以让某些组件在此容器中,重复运行指定的次数。在这个容器中,我们要定义初值、定义表达式、定义赋值语句,如图:
常用的表达式应用,就是以上这些了,当然还有其它一些类型的表达式定义,我们就不一一列举了,使用方法都大同小异,只要撑握了前面几种,这些定义也就一目了然了。
今天我们讲述了两个内容:变量和表达式,这两方面的内容,在SSIS包中扮演了非常重要的角色,只要我们充分、灵活地运用,它可以让包更有弹性,更灵活,更加有生命力。如果大家在以后的工作中遇到了,仔细琢磨琢磨,一定不会让你失望的。
分享到:
相关推荐
一本不错的SQL Server Integration Services学习用书。要下载的趁热! 注:英文版
数据仓库课程资源,帮助学习如何运用Integration Service
ssis 这个是 学习的重点 不看都不行
Apress.Pro.SQL.Server.2005.Integration.Services ,学习SSIS的好书
一本学习SQL Server 2005解决方案的好书 共6个压缩包
SQL Server Integration Services ,简称SSIS,本资源是根据微软官网学习时做的笔记,可以为需要学习SSIS的小白提供帮助
1.1.1 SAP Process Integration 1.1.2 SAP Composition Environment 1.1.3 SAP Process Orchestration 1.1.4 SAP Process Orchestration 7.5 Highlights 1.2 SAP Process Orchestration Components 1.2.1 SAP ...
数据仓库和ETL工具(如Talend, Informatica, SQL Server Integration Services等) 数据分析和可视化工具(如Tableau, PowerBI, QlikView等) 机器学习和人工智能框架(如TensorFlow, PyTorch等) 云服务平台(如AWS...
1 文档详细举例让使用者更容易理解; 2 包含详细演示步骤截图; 3 从Enterprise Services Repository(ESR)到 Integration Directory(IR),并且有接口监控详细步骤;
springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...
Integration Services 工作站组件、联机丛书及开发工具 1.6 小结 第2章 SQL Server 2005体系结构 2.1 SQL Server引擎组件 观测数据库引擎行为 协议 表格格式数据流(TDS)端点 关系引擎 ...
另外,《SQLServer 2008 DBA入门经典》还介绍了一整套GI工具,包括SQL Server Integration Services、Reporting Services、Analysis Services和Service Broker。 不管您是否否有经验,通过《SQL Server 2008 DBA...
另外,《SQLServer 2008 DBA入门经典》还介绍了一整套GI工具,包括SQL Server Integration Services、Reporting Services、Analysis Services和Service Broker。 不管您是否否有经验,通过《SQL Server 2008 DBA...
另外,《SQLServer 2008 DBA入门经典》还介绍了一整套GI工具,包括SQL Server Integration Services、Reporting Services、Analysis Services和Service Broker。 不管您是否否有经验,通过《SQL Server 2008 DBA...
4. PI & Business Integration 流程整合& 商业整合 24 5. KM & Collaboration 知识管理&合作 33 6. Master Data Management 主数据管理 34 7. Mobile 移动 36 8. Programming ABAP ABAP编程 39 二、 SAP Solution ...
内容简介 《SQL Server 2008编程入门经典(第3版)》由浅入深逐步介绍了SQL Server数据库的高级主题,重点讨论了SQL Server 2008的特殊功能以及...第18章 使用Integration Services进行集成 第19章 扮演管理员的角色 附录
内容简介 《SQL Server 2008编程入门经典(第3版)》由浅入深逐步介绍了SQL Server数据库的高级主题,重点讨论了SQL Server 2008的特殊功能以及...第18章 使用Integration Services进行集成 第19章 扮演管理员的角色 附录
From the design of the proposal, after a detailed investigation of the feasibility and necessity, through detailed design, trying to improve system integration and speed; and implementation phase in ...
学习node.js的好书 下面是目录: Preface 1 Chapter 1: Understanding the Node Environment 7 Extending JavaScript 9 Events 10 Modularity 12 The Network 13 V8 15 Memory and other limits 16 Harmony 18 The ...