ADF数据流Flatten组件处理REST数据源外层与嵌套数组问题
解决ADF数据流中REST数据源外层数组导致Flatten组件无法正常展开的问题
问题背景
预期的REST接口返回JSON结构:
{ "TotalItemCount": 636, "PageIndex": 0, "PageSize": 20, "Result": [ { "Id": "c02dd3ca-7440-4742-9802-af2b00655fe5", "Employment": [ { "EmploymentNumber": "1234" } ] } ] }
但在ADF中使用REST数据集作为数据源时,返回的JSON被自动添加了一层外层数组:
[ { "TotalItemCount": 636, "PageIndex": 0, "PageSize": 20, "Result": [ { "Id": "c02dd3ca-7440-4742-9802-af2b00655fe5", "Employment": [ { "EmploymentNumber": "1234" } ] } ] } ]
需要通过Flatten组件展开Result数组,最终提取Id和EmploymentNumber,但直接设置Unroll by为body无效。
解决步骤
需要分阶段添加Flatten组件处理嵌套数组:
1. 先拆解顶层外层数组
添加第一个Flatten组件:
- Unroll by:填入
$(代表整个顶层数组) - 作用:将外层数组拆解开,得到包含
TotalItemCount、PageIndex、PageSize、Result字段的单个对象行。
2. 展开Result数组
添加第二个Flatten组件:
- Unroll by:填入
Result - 作用:将
Result数组中的每个元素展开为单独的行,此时每行包含Id、Employment数组等字段。
3. 展开Employment数组(按需)
如果Employment是数组结构,添加第三个Flatten组件:
- Unroll by:填入
Employment - 作用:将每行的
Employment数组展开,得到包含Id和EmploymentNumber的行。
4. 保留目标字段(可选)
最后添加Select组件,仅保留Id和EmploymentNumber字段,得到最终需要的结构。
内容的提问来源于stack exchange,提问作者Hyzac
相关产品推荐
相关产品推荐

