【问题标题】:Azure data factory data flow json to SQLAzure 数据工厂数据流 json 到 SQL
【发布时间】:2020-11-26 12:13:26
【问题描述】:

我有一个包含分层数据的源 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 和 OrderItem,其中包含 OrderID 主键和外键。

现在我有一个 Azure 数据工厂数据流,其源代码如上 JSON,我需要将所有数据关系存放在相应的表中。

所以在这里我需要 OrderId(30933,308320) 和 OrderName(abc,xyz) 将进入 Order 表,相应的项目数据进入 OrderItem 表(从 Order 表中引用 OrderId)。在这种情况下,Order 表有 2 个,OrderItem 表有 3 个条目。

【问题讨论】:

  • 哪些数据到哪个表,请给我们澄清一下?
  • @LeonYue 我刚刚更新了问题。
  • 嗨@Manish Jain,如果我的回答对您有帮助,希望您能接受。这对其他社区成员可能是有益的。谢谢你。如果您有任何其他问题,请告诉我们。
  • @LeonYue,感谢您的时间和精力。当然,我会检查并执行。

标签: sql json azure-data-factory dataflow


【解决方案1】:

我们无法在一个副本中实现这一点。

我们可以在一个管道中使用两个副本活动,我测试过,它成功了。您可以按照以下步骤操作:

  1. 复制活动1:将数据从Orders(订单ID和订单名称)复制到表Orders
  2. 复制active2:将items(itemid and itemstatus)中的数据复制到 表OrderItems

注意:

  1. 复制活动 1 和 2 使用与源相同的 json 文件。这 不同之处在于映射设置。

  2. 复制活动 1 个接收器是 Azure SQL 数据库表 Orders,复制活动 2 sink 是 Azure SQL 数据库表OrderItems

为了让大家看清楚,我做了两张GIF图片。

复制活动 1 中的映射设置:

复制活动 2 中的映射设置:

运行管道:

查看表格中的数据:

限制是只能获取items的第一个元素,不能同时选择集合引用。

更新:

恭喜您以另一种方式实现它:使用数据流展平/转置数据,然后将其维护以倒入关系 SQL 表中。

【讨论】:

  • 您好实际上我是通过另一种方式实现的,但据您所知,我会说答案对其他人会有所帮助。我使用数据流对数据进行展平/转置,然后将其维护到关系 SQL 表中。
  • @ManishJain 恭喜!我会更新我的答案。感谢您为我们分享解决方法。
猜你喜欢
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 2021-01-15
  • 2020-11-30
  • 2021-11-06
  • 2020-04-14
相关资源
最近更新 更多