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. dubbo协议之响应头编码器&响应对象编码

    前2节分析完了请求头和请求对象的编码,这里看一下响应头和响应对象的编码: 和请求头部一样进来先指定序列化器,没有的话用默认的Hessian2,接下来2个字节的操作和请求头编码类似,第三个字节时去req ...

  2. 【mq读书笔记】消费进度管理

    从前2节可以看到,一次消费后消息会从ProcessQueue处理队列中移除该批消息,返回ProcessQueue最小偏移量,并存入消息进度表中.那消息进度文件存储在哪合适呢? 广播模式:同一个消费组的 ...

  3. LinuxKernel(一)

    首先,回顾一下基础的宏操作: C语言宏 #与## #的作用是字符串化:在一个宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 #define ERROR_LOG(info) fprin ...

  4. C语言--计算代码段运行时间

    c语言中有专一包含计算时间函数的头文件,time.h.当我们需要计算某段程序运行的时间时就需要用到time.h包含的clock()函数,在这里介绍一下如何使用这个函数计算代码运行时间. clock函数 ...

  5. Redis分布式锁—SETNX+Lua脚本实现篇

    前言 平时的工作中,由于生产环境中的项目是需要部署在多台服务器中的,所以经常会面临解决分布式场景下数据一致性的问题,那么就需要引入分布式锁来解决这一问题. 针对分布式锁的实现,目前比较常用的就如下几种 ...

  6. Spring Boot 2.x 多数据源配置之 JPA 篇

    场景假设:现有电商业务,商品和库存分别放在不同的库 配置数据库连接 app: datasource: first: driver-class-name: com.mysql.cj.jdbc.Drive ...

  7. Jmeter代理服务器录制脚本--浏览器拦截访问链接

    在 Jmeter性能测试的过程中您是否会遇到代理服务器无法打开浏览器,无法录制脚本的情况呢? 在测试过程中,我也遇到过这样的问题,希望能帮到正在找寻答案的你.... Jmeter录制脚本时,跟http ...

  8. PyQt(Python+Qt)学习随笔:QScrollBar以及QAbstractSlider滚动条部件功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 在Designer输入部件中Horizo ...

  9. HashMap稍微详细的理解

    此文章用来记录hashmap的一些特点(在学习中的所了解的,如有不足,请指正) 什么是hash表 概念 先来一段百度百科的的解释 散列表(Hash table,也叫哈希表),是根据关键码值(Key v ...

  10. Jmeter录制脚本-BadBoy

    录制脚本方式: 1)Badboy录制Jmter脚本 2)Jmter代理服务录制脚本 方式一:Badboy录制脚本 安装Badboy 录制脚本 1.双击Badboy 2.输入URL 3.点击" ...