在Azure Data Factory中基于Lookup输出构建字典对象的可行性咨询
在Azure Data Factory中构建字典对象的可行方案
你的方案核心思路可以实现,但因为Append活动仅支持数组,所以不能直接用Append来构建对象,需要换用Set Variable结合动态表达式,或者更高效的Data Flow来完成。
方法一:Set Variable + For Each循环(小数据量场景)
- 创建Object类型变量:先定义一个Object变量(比如
targetDict),初始值设为:{"values": {}} - 遍历Lookup输出:添加For Each活动,遍历范围设为
@activity('Lookup活动名称').output.Value - 更新字典变量:在For Each内部添加Set Variable活动,变量选择
targetDict,使用以下动态表达式:
逻辑说明:@json(concat('{"values": ', string(union(variables('targetDict').values, createObject(item().name, item().value))), '}'))createObject(item().name, item().value):将当前遍历项的name作为键、value作为值,生成单个键值对对象union(...):把新生成的键值对合并到已有字典的values对象中concat和json:重新拼接成符合目标格式的JSON对象
方法二:Data Flow(大数据量场景,更高效)
如果Lookup返回的数据量较大,用Data Flow处理更高效:
- Source活动:选择Lookup的输出作为数据源
- Aggregate活动:无需设置分组键,直接添加聚合列(比如命名为
values),表达式用:
这个表达式会把所有行的collect(map(name, value))name和value转换成键值对并聚合为一个对象 - Select活动:调整输出结构,将根字段设置为
values,映射到Aggregate生成的values列,最终输出就是目标字典格式 - Sink活动:将结果输出到变量、Blob存储或后续活动需要的位置
原始Lookup输出
"Value":[ { "name": "key1", "value": "value1" }, { "name": "key2", "value": "value2" } ]
目标字典对象
{ "values": { "key1": "value1", "key2": "value2" } }
内容的提问来源于stack exchange,提问作者Ibo
相关产品推荐
相关产品推荐

