我有一个带有层次数据的源json文件,我需要将其放入两个sql表(关系表)中。json如下所示
{
"orders":[
{
"orderid":"30933",
"ordername":"abc",
"items":[
{
"itemid":1,
"itemstatus":"Failed"
},
{
"itemid":2,
"itemstatus":"Failed"
}
]
},
{
"orderid":"308320",
"ordername":"xyz",
"items":[
{
"itemid":5,
"itemstatus":"Succeeded"
}
]
}
]
}
我的sql包含两个表order和orderid主键和外键的orderime。
现在我有了一个azure数据工厂数据流,其源代码与上面的json相同,我需要将所有关系数据存放在相应的表中。
所以这里我需要orderid(30933308320)和ordername(,xyz)进入order表,相应的items数据进入orderitem表(它引用order表中的orderid)。在本例中,order表有2个条目,orderitem表有3个条目。
1条答案
按热度按时间agyaoht71#
我们不能在一个副本中实现这一点。
我们可以在一个管道中使用两个复制活动,我进行了测试,结果成功了。你可以按照我的步骤:
copy active1:从
Orders
(orderid和ordername)到表Orders
.copy active2:从
items
(itemid和itemstatus)到表OrderItems
.注:
copy active 1和2使用与源相同的json文件。不同之处在于Map设置。
复制活动1接收器是azure sql数据库表
Orders
,copy active 2 sink is azure sql数据库表OrderItems
.为了让你明白,我做了两张gif图片。
复制活动1中的Map设置:
复制活动2中的Map设置:
运行管道:
检查表中的数据:
限制是我们只能得到
items
,我们不能同时选择集合引用。更新:
祝贺您以另一种方式实现了它:使用数据流展平/转置数据,然后将其维护到关系sql表中。