如何在Azure数据工厂(Synapse Studio)中使用管道表达式(而非数据流表达式)创建键值Map

disho6za  于 2022-11-25  发布在  其他
关注(0)|答案(1)|浏览(144)

我有两个数组,分别包含键和值:数组1["key1", "key2", "key3"]数组2["value1", "value2", "value3"]
通过ADF数据流表达式,我可以使用keyValues函数用这两个数组构造一个键值Map:

keyValues(["key1", "key2", "key3"],["value1", "value2", "value3"])

这将返回如下结果:

["key1" -> "value1", "key2" -> "value2", "key3" -> "value3"]

我想在一个管道内构造相同的键值Map,而不是数据流,但是keyValues函数在管道表达式中不可用。如何在Azure数据工厂/ Synapse Studio上构造带有管道表达式的键值Map?

fzwojiic

fzwojiic1#

没有直接的方法可以像在数据流中那样使用管道表达式生成器来创建键值对。以下是在ADF管道中生成所需键值对的一种方法:

  • 我采用了2个参数,其值如下:

  • 假设req是一个变量,我们希望在其中存储最终的键值对。

  • for each中,我已经使用项目值@range(0,length(pipeline().parameters.keys))来生成索引。

  • 现在,我使用了一个名为temp的变量,对req的当前值和当前迭代的动态构建的键值对应用并集。
@string(union(json(variables('req')),json(concat('{"',pipeline().parameters.keys[item()],'":"',pipeline().parameters.values[item()],'"}'))))

  • 最后,我用当前的temp值更新每次迭代的req变量值,即@variables('temp')


指令集

  • 运行管道后,它将在req变量中生成以下输出:

**注意:**ADF管道中不支持对象类型变量。无论何时要使用此对象(存储为字符串),都可以使用@json()函数将其转换为对象类型

相关问题