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安装MySQL5.7(CentOS)

    1.下载解压 1.1 MySql 5.7.26下载地址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 1.2 解压 tar -xv ...

  2. sql注入绕过安全狗实战

    =绕过 like regexp(匹配)> < (测试安全狗 ><不可以绕过) 注释+换行(%0a作为垃圾数据填充) 联合查询绕过 探测出当union select 出现时会拦截 ...

  3. JavaScript原型链及其污染

    JavaScript原型链及其污染 一.什么是原型链? 1.JavaScript中,我们如果要define一个类,需要以define"构造函数"的方式来define: functi ...

  4. 为什么Python中sort方法和sorted函数调用废弃使用cmp参数

    Python中sort方法和sorted函数老猿在前面一些章节介绍过,具体语法及含义在此不再展开说明,但老猿在前面学习相关内容时,只使用了简单的案例,对这两个方法的key参数没有深入研究,总以为就是以 ...

  5. 第8.30节 重写Python __setattr__方法实现属性修改捕获

    一. 引言 在<第8.26节 重写Python类中的__getattribute__方法实现实例属性访问捕获>章节介绍了__getattribute__方法,可以通过重写该方法,截获所有通 ...

  6. 分布式计算框架-Spark(spark环境搭建、生态环境、运行架构)

    Spark涉及的几个概念:RDD:Resilient Distributed Dataset(弹性分布数据集).DAG:Direct Acyclic Graph(有向无环图).SparkContext ...

  7. Shiro remeberMe反序列化漏洞复现(Shiro-550)

    Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能.Shiro框架直观.易用,同时也能提供健壮的安全性.在Apache Shiro编号为550的 issu ...

  8. 攻防世界 web进阶区 lottery

    首先进入题目的页面. 按其要求登录.然后看到以下界面. 御剑扫描目录,发现了robots.txt (robots协议) ,进入查看 进入.git/目录,用神器 GitHack 下载文件. 然后查看源码 ...

  9. CTF写脚本

    今天总结一下CTF如何写脚本快速得分....(比较菜,能力有限,大佬勿喷) 所谓的写脚本得分,就是利用了 python爬虫的思想,如果之前没有听说过的话,可以去爬虫的相关语法.如果是看网上的视频的话, ...

  10. 百度前端技术学院-基础-day22-24

    第二十二天到第二十四天:JavaScript里面的居民们 task1 题目: <div> <label>Number A:<input id="radio-a& ...