Azure 数据工厂数据流 json 到 SQL

Posted

技术标签:

【中文标题】Azure 数据工厂数据流 json 到 SQL【英文标题】:Azure data factory data flow json to 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,感谢您的时间和精力。当然,我会检查并执行。 【参考方案1】:

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

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

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

注意:

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

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

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

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

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

运行管道:

查看表格中的数据:

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

更新:

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

【讨论】:

您好实际上我是通过另一种方式实现的,但据您所知,我会说答案对其他人会有所帮助。我使用数据流对数据进行展平/转置,然后将其维护到关系 SQL 表中。 @ManishJain 恭喜!我会更新我的答案。感谢您为我们分享解决方法。

以上是关于Azure 数据工厂数据流 json 到 SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何使用数据工厂将 IoT 中心存储的 blob 复制到 Azure SQL

使用 azure 数据工厂管道将 json 对象存储到 azure 表存储实体

如何从 azure blob 存储中获取 json 数据并使用 azure 数据工厂将其发送到 power apps dataverse

Azure 数据工厂体系结构与 Azure SQL 数据库到 Power BI

到 Azure SQL 数据库的数据流输出仅包含 Azure 数据工厂中的 NULL 数据

Azure 数据工厂 ADF 数据管道将文件名包含在将数据复制到 sql 数据库中