Azure Data Factory 系列博客:

控制流的作用就是在管道的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 第七篇:控制流的更多相关文章

  1. 解剖SQLSERVER 第七篇 OrcaMDF 特性概述(译)

    解剖SQLSERVER 第七篇  OrcaMDF 特性概述(译) http://improve.dk/orcamdf-feature-recap/ 时间过得真快,这已经过了大概四个月了自从我最初介绍我 ...

  2. 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息

    在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同). 公众号可通过本接口来根据O ...

  3. 第七篇 Replication:合并复制-订阅

    本篇文章是SQL Server Replication系列的第七篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...

  4. 第七篇 Integration Services:中级工作流管理

    本篇文章是Integration Services系列的第七篇,详细内容请参考原文. 简介在上一篇文章,我们创建了一个新的SSIS包,学习了SSIS中的脚本任务和优先约束,并检查包的MaxConcur ...

  5. 第七篇 SQL Server安全跨数据库所有权链接

    本篇文章是SQL Server安全系列的第七篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...

  6. 第七篇 SQL Server代理作业活动监视器

    本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...

  7. 用仿ActionScript的语法来编写html5——第七篇,自定义按钮

    第七篇,自定义按钮这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ ...

  8. Python之路【第七篇】:线程、进程和协程

    Python之路[第七篇]:线程.进程和协程   Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  9. [老老实实学WCF] 第七篇 会话

    老老实实学WCF 第七篇 会话 通过前几篇的学习,我们已经掌握了WCF的最基本的编程模型,我们已经可以写出完整的通信了.从这篇开始我们要深入地了解这个模型的高级特性,这些特性用来保证我们的程序运行的高 ...

随机推荐

  1. Linux 系统故障排查,这里看过来

    来源:https://www.jianshu.com/p/0bbac570fa4c 导读 有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源.这时候就需要登录服务器进一步深入分析问题的 ...

  2. 网络管理监视很重要!学编程的你知道哪些不错的网络监控工具?2020 最好的Linux网络监控工具分享给你

    以下文章来源于新钛云服 翻译:侯明明 前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行, ...

  3. CentOS 6.5 iso系统定制

    前言 更改CentOS6.5背景图片.CentOS标题为DntOS,总之就是用ISO安装或者安装后的系统启动时不能有CentOS标志. ISO光盘目录介绍: (1)isolinux 目录存放光盘启动时 ...

  4. centOs7.5.64之前的操作系统搭建GitLab记录

    GitLab搭建步骤: 1. Install and configure the necessary dependencies (1)yum install curl openssh-server o ...

  5. pthread 条件变量

    在上一篇博客互斥量中,解决了线程如何互斥访问临界资源的问题. 在开始本文之前,我们先保留一个问题:为什么需要条件变量,如果只有互斥量不能解决什么问题? API init/destroy 条件变量的数据 ...

  6. 4.深入Istio源码:Pilot的Discovery Server如何执行xDS异步分发

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的Istio源码是 release 1.5. 介绍 Discovery Serv ...

  7. go语言之---数组(array)和切片(slice)

    一.数组 1.什么是数组? 1.数组是一系列同一类型数据的集合 2.数组中包含的每个数据被称为数组元素 3.一个数组中包含的元素个数成为数组长度 4.数组的长度是固定的 5.一个数组可以由零个或者多个 ...

  8. moviepy音视频剪辑:使用rotate函数实现视频变换处理以及参数expand取值为True时的花屏问题解决方案

    ☞ ░ 前往老猿Python博文目录 ░ 一.rotate函数功能介绍 moviepy的rotate函数用于将剪辑逆时针旋转指定的角度或弧度. 调用语法:rotate(clip, angle, uni ...

  9. 老猿Python重难点知识博文汇总

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 除了相关教程外,老猿在学习过程中还写了大量的学习随笔,内容比较杂,文章内容也参差不齐,为了方便,老猿 ...

  10. PyQt Designer中连接信号和槽时为什么只能连接控件自己的信号和槽函数?

    老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...