Azure Data Factory数据流中如何将带动态键的对象转换为数组?
在Azure Data Factory数据流中将含动态键的复杂对象转换为数组
问题场景
需要将包含动态UUID键的body对象转换为仅包含其属性值的数组,输入输出格式如下:
输入JSON
{ "headers": { "Content-Length": 1234 }, "body": { "00b50a39-8591-3db3-88f7-635e2ec5c65a": { "id": "00b50a39-8591-3db3-88f7-635e2ec5c65a", "name": "Example 1", "date": "2023-02-09" }, "0c206312-2348-391b-99f0-261323a94d95": { "id": "0c206312-2348-391b-99f0-261323a94d95", "name": "Example 2", "date": "2023-02-09" }, "0c82d1e4-a897-32f2-88db-6830a21b0a43": { "id": "00b50a39-8591-3db3-88f7-635e2ec5c65a", "name": "Example 3", "date": "2023-02-09" } } }
期望输出JSON
[ { "id": "00b50a39-8591-3db3-88f7-635e2ec5c65a", "name": "Example 1", "date": "2023-02-09" }, { "id": "0c206312-2348-391b-99f0-261323a94d95", "name": "Example 2", "date": "2023-02-09" }, { "id": "00b50a39-8591-3db3-88f7-635e2ec5c65a", "name": "Example 3", "date": "2023-02-09" } ]
解决方案步骤
在Azure Data Factory数据流中,使用内置的values()函数即可快速实现转换,具体操作如下:
- 在数据流中添加派生列转换节点,连接到你的数据源。
- 在派生列的表达式编辑器中,输入表达式:
values(body)
(若你的对象字段名不是body,替换为实际字段名称即可) - 将派生列命名为你需要的字段名(比如
outputArray)。 - 如果仅需最终数组结果,可添加选择转换,仅保留该派生的数组字段;或直接将其作为输出。
原理说明
values()是ADF数据流专门用于处理对象的内置函数,它会提取对象的所有属性值,并将这些值组合成一个数组,完美适配动态键对象转数组的场景。
内容的提问来源于stack exchange,提问作者Dontwan
相关产品推荐
相关产品推荐

