如何在ADF中使用集合引用交叉应用简单数组实现行拆分?
在Azure Data Factory的Copy Data活动中展开简单数值数组到多行
问题场景
源JSON格式:
{ "order_id": 1, "date": "20170122", "product_ids": [123, 124, 125] }
需要将数据导入SQL表后生成3行记录,每行对应product_ids数组的一个元素,关联原有的order_id和date。
解决方案(Copy Data活动实现)
不需要使用Data Flow,通过以下配置即可实现:
- 源端集合引用设置:在Copy Data活动的源配置中,将集合引用设为
$['product_ids']。这个配置会让ADF遍历product_ids数组的每个元素,将每个元素作为一条独立的处理记录。 - 字段映射配置:
- 映射
order_id:使用根路径引用$root['order_id'],获取原JSON根节点的order_id值。 - 映射
date:使用根路径引用$root['date'],获取原JSON根节点的date值。 - 映射
product_id:直接使用$引用当前遍历到的数组元素值(因为每个元素本身就是数值,没有子字段)。
- 映射
为什么之前的配置无效
- 使用
[0]:仅指定数组的第一个元素,只能生成一行记录,无法遍历整个数组。 - 使用
[*]:当集合引用已经指定为$['product_ids']后,每条处理记录对应数组的单个元素,此时[*]没有可引用的子数组,因此返回NULL。
内容的提问来源于stack exchange,提问作者A. Stam
相关产品推荐
相关产品推荐

