azure数据工厂数据流json到sql

n3h0vuf2  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(378)

我有一个带有层次数据的源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个条目。

agyaoht7

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表中。

相关问题