如何将JSON数组作为参数传入Dataflow并转换为表格格式?
解决Dataflow接收Lookup活动输出参数的问题
方法1:将JSON数组序列化为字符串,在Dataflow内解析
- Pipeline侧配置
- 在Dataflow的参数列表中新增一个字符串类型的参数(比如命名为
lookupJsonStr)。 - 传递参数时使用表达式把Lookup的输出数组转为字符串:
@string(activity('你的Lookup活动名称').output.value)
- 在Dataflow的参数列表中新增一个字符串类型的参数(比如命名为
- Dataflow侧解析
- 方式A:使用Inline JSON数据集
新建一个Inline类型的JSON数据集,在「内容」处选择参数lookupJsonStr,然后在数据集的JSON设置里,把「文档形式」设为「数组文档」,路径填$,直接读取为表格结构。 - 方式B:用ParseJSON+Flatten处理
在Dataflow中添加一个Derived Column转换,新增列(比如叫parsedArray),用表达式:
接着添加Flatten转换,选择parseJSON(lookupJsonStr)parsedArray作为展开的数组列,展开后就能得到包含PO_id和SO_number的行数据。
- 方式A:使用Inline JSON数据集
方法2:提前在Pipeline中转为CSV格式字符串
- Pipeline侧生成CSV字符串
添加一个Set Variable活动,变量类型选字符串,用表达式拼接成目标CSV格式:
这个表达式会直接生成带表头和引号包裹值的CSV字符串。@concat( 'PO_id,SO_number', '\n"', join( activity('你的Lookup活动名称').output.value, '"', '\n"', (item) => concat(item.PO_id, '","', item.SO_number) ), '"' ) - Dataflow侧读取
给Dataflow配置字符串参数接收这个CSV内容,然后新建Inline类型的CSV数据集,把参数作为输入内容,即可直接得到目标表格。
方法3:直接在Dataflow内执行Lookup(推荐)
如果你的数据源支持Dataflow直接访问,完全可以跳过Pipeline的Lookup活动,直接在Dataflow中添加Lookup转换,直接查询获取PO_id和SO_number的数据,避免参数传递的类型问题。
内容的提问来源于stack exchange,提问作者Debashis
相关产品推荐
相关产品推荐

