ADF 第七篇:控制流
Azure Data Factory 系列博客:
- ADF 第一篇:Azure Data Factory介绍
- ADF 第二篇:使用UI创建数据工厂
- ADF 第三篇:Integration runtime和 Linked Service
- ADF 第四篇:管道的执行和触发器
- ADF 第五篇:转换数据
- ADF 第六篇:Copy Data Activity详解
控制流的作用就是在管道的Activity之间设置约束条件,只有满足一定的约束条件时,才会执行相应的Activity。控制流主要分为优先约束和Activity。
一,控制流的优先约束
从直观上来看,控制流的优先约束使得Activity在Pipeline中按照一定的条件进行分支和连接。利用控制流可以实现如下场景:

如果Copy data活动执行成功,那么管道将沿着OnSuccess的控制流,执行“Send Success Email”这一分支,发送成功Copy操作的详细信息; 如果Copy data活动执行失败,那么管道将沿着OnFailure的控制流,执行“Send Fail Email”这一分支,发送Copy操作失败的详细信息。
1,OnSuccess分支
每一个Activity都会默认创建一个OnSuccess控制流,该控制流线的颜色是绿色的,拖动Activity右侧的绿色方块,UI会自动出现一个绿色的箭头,把箭头拖到下一个Web Activity上,就完成了OnSuccess控制流的设置。

2,添加OnFail分支
点击任意一个Activity右下方的+号,弹出"Add activity on"列表,选择 Failure,就会在Activity的右方弹出一个红色的矩形,跟OnSuccess控制流一样,拖放到下一个Activity上,就完成了OnFail控制流的设置。

3,利用控制流约束控制邮件的发送
如下图所示,利用控制流来控制邮件的发送 ,当Copy data Activity执行成功时,发送copy成功执行的消息;当Copy data Activity失败时,发送Copy 执行失败的消息。

二,控制流Activity
控制流的Activity主要用于变量、循环和条件:
- Append variable:向 Array类型的变量中追加变量值
- Set variable:设置变量的值
- Filter:在管道中使用 Filter 活动,把筛选器表达式应用到输入数组。
- Lookup:用于从数据源中检索数据集,返回执行查询或存储过程的结果,如果查找Activity的输出是单行的,那么该Activity的输出可以用于ForEach活动。
- ForEach:循环执行内部的活动,循环的次数由items指定的集合决定,依次访问集合中每一个元素。
- If condition:If-Else 分支,条件为True时,执行Activity1,条件为False时,执行另一个Activity。
- Switch:分支切换,根据条件,执行不同分支的Activity
- Validation:验证活动,它会阻止Pipeline的执行,直到应用的数据集存在或超时为止。
- Until:Until 活动提供的功能与 do-until 循环结构以编程语言提供的功能相同。 它在循环中将执行一组活动,直到与活动相关联的条件的计算结果为 true,你可以在数据工厂中为 Until 活动指定超时值。
1,ForEach活动
ForEach 活动在管道中定义重复的控制流。 此活动用于循环访问集合,并在循环中执行指定的活动。 此活动的循环实现类似于采用编程语言的 Foreach 循环结构。点击ForEach图标内部的“笔”,向内部添加活动。

ForEach活动的核心配置是Items属性,该属性需要通过“Add dynamic content”来配置,用户可以通过系统变量(System variables)、Functions、Variables、和Activity outputs来作为Iteration。

要把Activity outpus作为ForEach活动的Iteration,首先要建立Activity和ForEach活动的优先约束,把上游Activity的输出作为Iteration,执行ForEach活动内的Activity,直到穷尽数据集的所有item。
2,Lookup活动
Lookup活动的作用就是从Table、Query或Stored procedure中查找出数据行,为了保证Lookup活动的查询性能,Lookup 活动的限制:最多可以返回 5000 行;如果结果集包含的记录超过此范围,将返回前 5000 行。Lookup活动的输出最多支持 4 MB 左右。如果大小超过此限制,则活动会失败。目前,Lookup活动在超时前的最长持续时间为 24 小时。
如果勾选"First row only",那么表示Lookup活动只返回第一行,如果不勾选,那么返回所有行,但是要满足Lookup活动的限制。

Looup活动输出的结果可以作为ForEach的迭代器。
参考文档:
Branching and chaining activities in an Azure Data Factory pipeline using the Azure portal
ADF 第七篇:控制流的更多相关文章
- 解剖SQLSERVER 第七篇  OrcaMDF 特性概述(译)
		解剖SQLSERVER 第七篇 OrcaMDF 特性概述(译) http://improve.dk/orcamdf-feature-recap/ 时间过得真快,这已经过了大概四个月了自从我最初介绍我 ... 
- 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息
		在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据O ... 
- 第七篇 Replication:合并复制-订阅
		本篇文章是SQL Server Replication系列的第七篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ... 
- 第七篇 Integration Services:中级工作流管理
		本篇文章是Integration Services系列的第七篇,详细内容请参考原文. 简介在上一篇文章,我们创建了一个新的SSIS包,学习了SSIS中的脚本任务和优先约束,并检查包的MaxConcur ... 
- 第七篇 SQL Server安全跨数据库所有权链接
		本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ... 
- 第七篇 SQL Server代理作业活动监视器
		本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ... 
- 用仿ActionScript的语法来编写html5——第七篇,自定义按钮
		第七篇,自定义按钮这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ ... 
- Python之路【第七篇】:线程、进程和协程
		Python之路[第七篇]:线程.进程和协程 Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 1 ... 
- [老老实实学WCF] 第七篇 会话
		老老实实学WCF 第七篇 会话 通过前几篇的学习,我们已经掌握了WCF的最基本的编程模型,我们已经可以写出完整的通信了.从这篇开始我们要深入地了解这个模型的高级特性,这些特性用来保证我们的程序运行的高 ... 
随机推荐
- Vue 3.0 升级指南
			本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 2020年9月18日Vue 3.0正式发布,距离2016年10月1日Vue ... 
- tar解压提示:tar (child): 无法连接至 xxxx: 解析失败
			如图提示: 错误原因:由于压缩文件中含有冒号导致 解决办法: 使用tar命令的–force-local选项 
- 这篇建议java开发都看看,对Java方法及加深理解的很深,值得一看!
			方法和加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环 和 return 的区别 方法名:注意规范 见名知意 参数列表(参数类型,参数名)- 异常抛出 // Demo01 类 ... 
- springsecurity+springsocial资料收集
			https://blog.csdn.net/tryandfight/article/details/80524573 https://niocoder.com/2018/01/09/Spring-Se ... 
- PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色
			专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ... 
- PyQt(Python+Qt)学习随笔:部件的大小策略sizePolicy的含义
			在Qt Designer中的每个部件,除了设置部件的位置(geometry)之外,还可以指定部件的大小策略sizePolicy.部件的sizePolicy用于说明部件在布局管理中的缩放方式,当部件没有 ... 
- Day5 Scrum 冲刺博客
			一.站立式会议# 1. 会议照片 2. 工作进度+燃尽图 团队成员 昨日完成工作 今日工作计划 遇到的困难 周梓波 将方块分类并抽象成类 将方块旋转变形 逻辑漏洞较多 纪昂学 绘制游戏背景,方块,状态 ... 
- clion2020最新安装破解版教程 内含激活码、破解补丁、无限重置时间插件
			clion是一款开发C.C++等相关程序的利器,到目前为止已经更新到2020.3版本啦!还没有升级的小伙伴们赶紧升级啦,本文教大家如何安装clion2020.3版本并且破解,此方法亲测100%可以永久 ... 
- FirstCode异常 此引用关系将导致不允许的周期性引用
			FirstCode异常 此引用关系将导致不允许的周期性引用 一般由多表里的外键互相引用引起. 解决方法: 1.去掉对应数据类里的外键对应的对象属性. 2.去掉该外键. [Table("TAs ... 
- 树的直径,LCA复习笔记
			前言 复习笔记第6篇. 求直径的两种方法 树形DP: dfs(y); ans=max( ans,d[x]+d[y]+w[i] ); d[x]=max( d[x],d[y]+w[i] ); int di ... 
