You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Factory/Synapse Studio用管道表达式构建键值映射

在Azure Data Factory/Synapse管道中实现键值数组转映射的方法

由于ADF/Synapse管道表达式中没有数据流的keyValues函数,你可以通过管道内置函数组合来实现相同的键值映射效果,具体实现如下:

核心实现思路

通过生成索引数组遍历键值对,拼接成标准JSON字符串后转为JSON对象(即管道中的键值映射结构)。

具体表达式示例

假设你已将键数组和值数组存储在管道参数中:

  • 键数组参数:keys,值为 ["key1", "key2", "key3"]
  • 值数组参数:values,值为 ["value1", "value2", "value3"]

使用以下管道表达式生成键值映射:

json(
    concat(
        '{',
        join(
            map(
                range(0, length(pipeline().parameters.keys)),
                i => concat('"', pipeline().parameters.keys[i], '":"', replace(pipeline().parameters.values[i], '"', '\\"'), '"')
            ),
            ', '
        ),
        '}'
    )
)

表达式拆解

  1. range(0, length(...)):生成从0到键数组长度-1的索引数组,用于匹配两个数组的对应元素
  2. map(...):遍历每个索引,将对应的键和值拼接成"key":"value"格式的字符串(replace用于转义值中的双引号,避免JSON格式错误)
  3. join(...):将所有键值对字符串用逗号分隔,拼成JSON对象的内部内容
  4. concat('{', ..., '}'):给内部内容包裹JSON对象的首尾括号
  5. json(...):将拼接好的字符串转为JSON对象,即最终的键值映射结构

注意事项

  • 必须保证键数组和值数组的长度完全一致,否则会出现索引越界错误
  • 如果值中包含特殊字符(如双引号、反斜杠),需用replace函数转义,避免JSON格式失效
  • 如果数组来自其他活动输出(如Lookup、Set Variable),只需将表达式中的pipeline().parameters.keys替换为对应的活动输出路径即可

替代方案:Azure Function(复杂场景)

若数组包含复杂数据类型或需要更灵活的处理逻辑,可创建一个Azure Function接收两个数组输入并返回键值映射对象,再通过管道中的Azure Function活动调用该函数。

内容的提问来源于stack exchange,提问作者xiexieni9527

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:50:44