Azure Data Factory 系列博客:

Azure Data Factory传递参数的方式主要有两种,通过Pipeline的Parameter和Variable来传递参数,通过Activity的输出来传递参数。要在Activity中引用Parameter、Variable或活动输出的值,需要通过“Add dynamic content”来实现。

Activity可以通过表达式获得动态上下文,使得Activity可以根据表达式的值得出不同的执行效果。

一,通过Parameter 和 Variable来传递参数

在Pipeline中,可以创建Parameter和Variable,Parameter是不可变的、只读的常量,而Variable的值是可变。从这个意义上来说,Parameter和Variable都是在Pipeline级别上创建的常量或变量。

1,创建Parameter和Variable

点击Pipeline的画布,底部弹出对话框,打开Parameters选项卡,创建Parameter,Parameter的Type有String、Int、Float、Bool、Array、Object和SecureString。Object代表的是对象类型,通常是指表类型。

 ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

打开Variables选项卡,创建Variable,Variable的Type只有String、Bool和Array。

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

2,引用Parameter和Variable

在“Add dynamic content”的文本框中输入公式,来引用Parameter或Variable的值。

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

举个例子,引用Paramter的值:

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

举个例子,引用Variable的值:

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

3,更新Variable的值

用于可以通过Set Variable 活动或Append Variable活动来更新Variable的值。其中,Set Variable活动用于更新变量值,而Append Variable用于向Array类型的变量增加item,即向数组的末尾增加一个元素。

二,通过Activity的输出来传递参数

在Pipeline中的Activity的输出,都可以通过“Add dynamic content”来添加Activity outputs:

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

通常活动的输出(output)是表结构,引用表中第一行的某一列的语法是:

@activiy('activity_name').output.firstRow.column_name 

三,应用表达式

数据工厂以JSON文件的格式来配置Activity的属性,一个Key-Value对表示一个属性。在Value中应用表达式,表达式中的字符串使用单引号:'string' 来表示,

1,表达式的理论知识

定义中的JSON的值(Value)可以是文字的(常量),或者在运行时求值的表达式,例如:

"name": "value"
"name": "@pipeline().parameters.password"

表达式可以出现在JSON字符串值中的任何位置,如果JSON值是一个表达式,则可以通过前导符号@来提取表达式的主体。如果需要以@开头的文字字符串,则必须使用@@对其进行转义。 以下示例显示如何评估表达式。

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

举个例子,myString参数是foo,myNumber参数是42,引用表达式运算的结果如下:

ADF 第八篇:传递参数(Pipeline的Parameter和Variable,Activity的output)和应用表达式-LMLPHP

2,应用表达式

打开“Add dynamic content”对话框,输入表达式,如果表达式需要引用运行时的值,要以@字符开头。

上文遇到的表达式:

  • 引用变量: @variables('var_name')
  • 引用Pipeline的参数:@pipeline().parameters.para_name
  • 获得活动输出的第一行的某一列的值:@activiy('activity_name').output.firstRow.column_name
  • 根据表达式获得一个bool值:@equals(variables('strVar'),'abc')

参考文档:

Expressions and functions in Azure Data Factory

12-25 17:31