如何在ADF Data Flow中将JSON展平为行并合并id列?
ADF实现main.id与sub.id合并到同一列并生成多行数据的方法
场景说明
原始JSON数据包含一个main.id和一个sub数组(内含多个sub.id),使用Flatten后会得到main.id和sub.id分属两列的结果,我们需要将所有id合并到同一列,生成多行数据。
操作步骤
展开sub数组
添加Flatten任务,选择输入数据的header作为展开层级,指定展开sub嵌套数组。执行后将得到2行数据,包含列:main.id(值均为1)、sub.type、sub.id(值为2、3)。提取main.id单独成数据集
基于Flatten后的结果添加Derived Column任务,创建新列target_id,表达式为main.id,同时移除其他无关列。此时得到仅含一行数据的数据集:target_id = 1。提取sub.id单独成数据集
复制Flatten后的数据集,添加Derived Column任务,创建新列target_id,表达式为sub.id,移除其他无关列。此时得到两行数据的数据集:target_id = 2、target_id = 3。合并两个数据集
添加Union任务,将步骤2和步骤3生成的两个数据集合并,匹配target_id列。最终将得到3行数据,所有id都集中在target_id列中。
另一种需求的处理(若需每行关联main.id与对应sub.id)
如果你的需求是每行保留main.id与对应sub.id的关联,但合并到同一列(如格式为1-2、1-3),可简化步骤:
- 完成Flatten任务后,添加Derived Column任务,创建新列
combined_id,表达式为:concat(toString(main.id), '-', toString(sub.id)) - 移除原有的
main.id和sub.id列,即可得到两行数据,每行的combined_id列包含关联的两个id。
内容的提问来源于stack exchange,提问作者DC07
相关产品推荐
相关产品推荐

