在 Azure 数据工厂和 Azure Synapse Analytics 中的“设置变量”活动
适用于:Azure 数据工厂 Azure Synapse Analytics
使用“设置变量”活动可设置数据工厂或 Synapse 管道中定义的字符串、布尔或数组类型的现有变量的值,或使用“设置变量”活动设置管道返回值(预览)。
使用 UI 创建“设置变量”活动
若要在管道中使用 Set Variable 活动,请完成以下步骤:
- 选择管道画布的背景,并使用“变量”选项卡添加变量:
在管道“活动”窗格中搜索“Set Variable”,然后将 Set Variable 活动拖动到管道画布上。
在画布上选择“设置变量”活动(如果尚未选择),然后选择“设置”选项卡以编辑其详细信息。
为“变量类型”选择“管道变量”。
选择 Name 属性的变量。
输入表达式以设置变量的值。 该表达式可以是文本字符串表达式,也可以是动态表达式、函数、系统变量或其他活动的输出的任意组合。
使用 UI 设置管道返回值
我们扩展了“设置变量”活动,以包含一个名为“管道返回值”的特殊系统变量,允许在以下场景中从子管道到调用管道的通信。
在使用变量之前,无需定义该变量。 有关详细信息,请参阅管道返回值
Type 属性
属性 | 描述 | 必需 |
---|---|---|
name | 管道中活动的名称 | 是 |
description | 描述活动用途的文本 | 否 |
type | 必须设置为“SetVariable” | 是 |
variableName | 此活动设置的变量的名称 | 是 |
值 | 变量分配到的字符串文本或表达式对象值 | 是 |
递增变量
涉及变量的常见方案是将变量用作 Until 或 ForEach 活动中的迭代器。 在“设置变量”活动中,无法引用在 value
字段中设置的变量,也就是说,不能进行自引用。 若要解决此限制,请设置一个临时变量,然后创建第二个“设置变量”活动。 第二个“设置变量”活动会将迭代器的值设置为临时变量。 下面是此模式的示例:
- 首先定义两个变量:一个用于迭代器,一个用于临时存储。
- 然后,使用两个活动递增值
{
"name": "pipeline1",
"properties": {
"activities": [
{
"name": "Increment J",
"type": "SetVariable",
"dependsOn": [],
"policy": {
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"variableName": "temp_j",
"value": {
"value": "@add(variables('counter_i'),1)",
"type": "Expression"
}
}
},
{
"name": "Set I",
"type": "SetVariable",
"dependsOn": [
{
"activity": "Increment J",
"dependencyConditions": [
"Succeeded"
]
}
],
"policy": {
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"variableName": "counter_i",
"value": {
"value": "@variables('temp_j')",
"type": "Expression"
}
}
}
],
"variables": {
"counter_i": {
"type": "Integer",
"defaultValue": 0
},
"temp_j": {
"type": "Integer",
"defaultValue": 0
}
},
"annotations": []
}
}
变量的范围在管道级别。 这意味着变量不是线程安全的,如果从并行迭代活动(如 ForEach 循环)中访问变量,尤其是当值也在该 foreach 活动中被修改时,可能会导致意外的、你不希望其出现的行为。
相关内容
详细了解其他相关的控制流活动: