本文属于【Azure Data Platform】系列。
接上文:【Azure Data Platform】ETL工具(17)——ADF 迭代和条件活动(1)
本文接上文,继续简要介绍ADF的迭代和条件活动
If Condition
这次用的不是参数,而是变量,如下图所示,点击空白处然后选择变量,新建一个变量Var,类型为字符串,值为Y。

创建一个表和存储过程来验证结果:
CREATE TABLE [dbo].[TBL_If_Activity](
[VALUE] VARCHAR(10) NULL
) ON [PRIMARY]
GO
CREATE PROCEDURE [dbo].[sp_insert_if] @VALUE VARCHAR(10)
AS
INSERT INTO TBL_If_Activity (VALUE)
VALUES (@VALUE)
配置两个存储过程活动,使用上面的存储过程,当If Condition的True活动时,直接传入true值。False活动时,调用存储过程直接传入false值,以便验证。


因为变量值是Y, 而If condition的判断也是对Y进行校验,所以运行结果会是true:

证明它走的确实是True的这个分支,那下面修改一下判断条件让它进行False分支:

结果是预期的:

Switch 切换
switch 类似于SQL语言中的case when,这次我们用参数,参数名为color,值为R。

Switch有两个活动:
- 表达式:提供用于判断的表达式。这个表达式是大小写敏感的。
- 添加事件:就是case when的对应逻辑。default是默认操作。

用前面定义的参数color作为表达式的判断:

添加一个事件:

同样, 使用存储过程和一个表来记录验证结果:
CREATE TABLE [dbo].[TB_Switch](
[VALUE] [varchar](10) NULL
) ON [PRIMARY]
GO
CREATE PROCEDURE [dbo].[sp_insert_swith] @VALUE VARCHAR(10)
AS
INSERT INTO TB_Switch (VALUE)
VALUES (@VALUE)
分别为Default和新加的判断R进行存储过程配置,对应的值就是Default和R并传入到存储过程中。


调试并查询表中数据可以看到结果是预期的。

接下来把参数值从R改成A, 因为Switch并没有配置对A的处理,所以它应该会调用default那部分:

结果正确:

Switch相对比较简单,我们只需要对各种情况进行分别配置即可。
Until(截止)
Until是迭代和条件活动中最后一个活动。
它有两个设置项,表达式和超时,表达式的值计算必须为真或假。超时在下图已经有解释了。

沿用上面的Color参数,添加判断:
@equals(pipeline().parameters.Color,‘R’)
对Switch的下一个活动,添加一个存储过程活动,插入的值就是上面的参数 R。

调试并检查结果:

下面传入一个使其为False的值,比如A,

可以看到这个管道一直执行,因为我没有做其它处理,所以它会一直循环,直到“超时”设置,也就是7天之后才会停止。

表里面也有大量的A值在里面:

所以对于这类循环类的操作,第一步应该是考虑如何让它“停下来”,最简单的就是设置合理的超时时间。
总结
本篇和上篇文章介绍了ADF 迭代和条件活动,并且做了简要演示。这些活动更多的是对编程语言的图形化、工具化还有一定的处理优化提升。如果有相关编程经验,理解起来应该不会太难。
本文详细介绍了Azure Data Factory中的IfCondition、Switch和Until活动,通过实例演示了如何配置参数变量,以及如何利用它们实现条件判断和循环操作。同时,也强调了合理设置超时的重要性。
953

被折叠的 条评论
为什么被折叠?



