Azure Data PlatformETL工具(17)——ADF 迭代和条件活动

Posted 發糞塗牆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Data PlatformETL工具(17)——ADF 迭代和条件活动相关的知识,希望对你有一定的参考价值。

本文属于【Azure Data Platform】系列。
接上文:【Azure Data Platform】ETL工具(16)——ADF 变量
本文简要介绍ADF的迭代和条件活动

前言

由于时间关系,接下来不打算一个一个介绍,而是按分组来介绍一些活动。比如本文的“迭代和条件”。如下图,这个分组下面包含了:
筛选(Filter):可以对数据进行筛选并且传入输入数组中。
ForEach:Foreach 活动用于循环访问活动中指定的集合。在 Foreach 活动中,可以指定每一次的迭代需要执行一个或者多个其他活动。
If Condition:就是编程中的if else,判断条件的true 还是false,然后根据判断结果执行对应的操作。
切换(Switch):类似于SQL中的case when,与if condition相比,if condition只判断真假两个值,但是切换活动,可以判断多种值。
截止(Until):这个类似于编程语言中的do-while, 会一直执行,直到判断结果为true才停下来。所以对于这个活动,要注意控制停止条件,以免进入死循环。

接下来我们简要演示一下其中的两个活动。

筛选(Filter)

创建一个Filter活动,设置一个全局参数(点击空白处),名为ARR,数组类型,值为[1,2,3,4,5]

然后对筛选活动进行设置,在【项】处添加动态内容,直接点击参数ARR即可生成。

对【条件】添加动态内容,假设我们只要大于3的值,那么可以手动输入@greater(item(),3):

调试并检查输出:

可以看到,输出结果为4,5,符合我们的需求。

ForEach

  • 顺序的:顺序执行循环还是并行执行循环(默认值),如果有多个循环在这个活动里面,那么如果这个取消勾选(也就是下图状态),则会同时运行这几个循环。
  • 批处理数:只有上面的选项没有勾选才会出现,用于指定并行执行循环的个数。默认是20,最大值是50。
  • 项:必须是一个数组表达式。


因为ForEach接下来还要做一些响应,所以建一个简单的存储过程并配置到存储过程活动中,同时创建一个表来存储结果:

CREATE TABLE [dbo].[TB_ForEach](
[VALUE] [int] NULL
) 
CREATE PROCEDURE [dbo].[sp_insert_foreach] @VALUE INT
AS  
INSERT INTO TB_ForEach(VALUE)
VALUES (@VALUE)

设置ForEach活动,传入的值是前面用的数组[1,2,3,4,5],按以下方式调用:

然后为ForEach活动添加后续相应:

配置存储过程活动,参数值是@item, 这个值来自于外层ForEach的迭代传入。

运行pipeline,可以看到每次迭代都有一行记录。同时我们检查DB中的结果,也是符合预期的:


但是因为没有勾选上面“顺序的”,也就是会并行运行,所以插入顺序并不是有序的。

清空表然后勾选后再调试:

可以看到插入是有序的:

关于ForEach活动就简介到这里。

下一文会继续介绍其他的活动,但是依旧沿用这里的一些设置。

以上是关于Azure Data PlatformETL工具(17)——ADF 迭代和条件活动的主要内容,如果未能解决你的问题,请参考以下文章

Azure Data PlatformETL工具(19)——Azure Databricks

Azure Data PlatformETL工具(20)——创建Azure Databricks

Azure Data PlatformETL工具(20)——创建Azure Databricks

Azure Data PlatformETL工具——重新认识Azure Data Factory

Azure Data PlatformETL工具(11)——ADF 数据流

Azure Data PlatformETL工具——使用Azure Data Factory数据流传输数据