我有一个带有分层数据的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持有两个带有OrderID主键和外键的表Order和OrderItem。
现在我有一个Azure数据工厂数据流,其源与上面的JSON一样,我需要将所有关系数据停放在相应的表中。
所以在这里我需要OrderId(30933,308320)和OrderName(abc,xyz)将进入Order表,而各个项目数据进入OrderItem表(从Order表中引用OrderId)。在这种情况下,Order表具有2个,而OrderItem表具有3个条目。
答案 0 :(得分:1)
我们无法在一个副本中实现这一目标。
我测试过,我们可以在一个管道中使用两个复制活动,它成功了。您可以按照以下步骤进行操作:
Orders
(订单ID和订单名)复制到表Orders
。items
(itemid和itemstatus)复制到
表OrderItems
。注意:
复制活动1和2使用与源相同的json文件。的 区别在于映射设置。
复制活动1个接收器是Azure SQL数据库表Orders
,复制活动
2个接收器是Azure SQL数据库表OrderItems
。
为了让您清楚地理解它,我制作了两张GIF图片。
运行管道:
检查表中的数据:
限制是我们只能获取items
的第一个元素,而不能同时选择两者的集合引用。
更新:
恭喜您以另一种方式实现了它:使用数据流展平/转置数据,然后将其维护以倒入关系SQL表中。