在 Azure 数据工厂和 Azure Synapse Analytics 中设置管道返回值
适用于:Azure 数据工厂 Azure Synapse Analytics
在调用管道子管道范例中,可以使用设置变量活动将值从子管道返回到调用管道。 在以下方案中,有一个通过执行管道活动运行的子管道。 我们想要从子管道检索信息,然后在调用管道中使用这些信息。
引入管道返回值,它是键值对的字典,用于在子管道和父管道之间实现通信。
先决条件 - 调用子管道
作为先决条件,你的设计需要一个调用子管道的执行管道活动,并且该活动上启用了“等待完成”。
在子管道中配置管道返回值
我们已扩展设置变量活动以包含系统变量“管道返回值”。 不需要在管道级别定义这些变量(与在管道中使用的任何其他变量不同)。
- 在管道“活动”窗格中搜索“Set Variable”,然后将 Set Variable 活动拖动到管道画布上。
- 选择画布上的“设置变量”活动(如果尚未选择)及其“变量”选项卡,以编辑其详细信息。
- 选择“管道返回值”作为变量类型。
- 选择“新建”以添加新的键值对。
- 可以添加的键值对数仅受返回的 JSON 的大小限制 (4MB) 限制。
对于值类型,可以使用几个选项,包括
类型名称 | 说明 |
---|---|
字符串 | 常量字符串值。 例如:'ADF is awesome' |
Expression | 它允许引用先前活动的输出。 可以使用此处的字符串内插来包括内联表达式值,如 "The value is @{guid()}" 。 |
数组 | 它需要一个字符串值数组。 按 Enter 键分隔数组中的值 |
布尔 | 是或否 |
Null | 信号占位符状态;该值为常量 null |
Int | 整数类型的数值。 例如:42 |
浮点 | 浮点类型的数值。 例如:2.71828 |
Object | 警告:仅适用于复杂用例。 用于为值嵌入键值对类型的列表 |
对象类型的值定义如下:
[{"key": "myKey1", "value": {"type": "String", "content": "hello world"}},
{"key": "myKey2", "value": {"type": "String", "content": "hi"}}
]
在调用管道中检索值
子管道的管道返回值将成为执行管道活动的活动输出。 可以使用 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName 检索信息。 用例没有限制。 例如,可以使用
在引用管道返回值方面有两个值得注意的地方。
- 使用对象类型时,可以进一步扩展到嵌套的 json 对象,例如 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
- 使用数组类型时,可以使用 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0] 指定列表中的索引。 该数字的索引以零为基础,即从 0 开始。
注意
请确保引用的 keyName 存在于子管道中。 ADF 表达式生成器无法为你确认引用检查。 如果有效负载中缺少引用的键,管道将失败
特殊注意事项
虽然可以在一个管道中包含多个“设置管道返回值”活动,但必须确保该管道中只执行其中一个活动。
为避免出现上述在调用管道中缺少键的情况,建议你对子管道中的所有分支都使用相同的一组键。 考虑在特定分支中为没有值的键使用 null 类型。
Azure 数据工厂表达式语言不直接支持内联 JSON 对象。 相反,必须正确连接字符串和表达式。
例如,对于以下 JSON 表达式:
{ "datetime": "@{utcnow()}", "date": "@{substring(utcnow(),0,10)}", "year": "@{substring(utcnow(),0,4)}", "month": "@{substring(utcnow(),5,2)}", "day": "@{substring(utcnow(),8,2)}" }
等效 Azure 数据工厂表达式将为:
@{ concat( '{', '"datetime": "', utcnow(), '", ', '"date": "', substring(utcnow(),0,10), '", ', '"year": "', substring(utcnow(),0,4), '", ', '"month": "', substring(utcnow(),5,2), '", ', '"day": "', substring(utcnow(),8,2), '"', '}' ) }
相关内容
详细了解其他相关的控制流活动: