首页 > 解决方案 > 如何使用数据流在 blob 存储中获取 JSON 数组

问题描述

我在数据工厂中使用 Azure 数据流。我有一个 Azure SQL 数据库作为源。以下是示例:

Firstname Lastname Age phone      mobile
Don       Bosco    56  34578970   134643455
Abraham   Lincoln  87  56789065   246643556

下面是数据流:

Source -> Sink (JSON Blob storage)

在接收器中,我得到一个文件,输出如下:

{"Firstname": "Don", "Lastname": Bosco, "Age": 56, "contact": [{"number": "34578970", "type": "phone"}, {"number": "134643455", "type": "mobile"}]}
{"Firstname": "Abraham", "Lastname": Lincoln, "Age": 87, "contact": [{"number": "56789065", "type": "phone"}, {"number": "246643556", "type": "mobile"}]}

相反,我需要得到如下输出:

[
    {"Firstname": "Don", "Lastname": Bosco, "Age": 56, "contact": [{"number": "34578970", "type": "phone"}, {"number": "134643455", "type": "mobile"}]},
    {"Firstname": "Abraham", "Lastname": Lincoln, "Age": 87, "contact": [{"number": "56789065", "type": "phone"}, {"number": "246643556", "type": "mobile"}]}
]

我知道如何在复制活动中执行此操作,但无法找到任何使用数据流执行此操作的方法。我需要在数据流中执行此操作,因为复制数据活动不支持复杂类型,因此不支持 json 中的数组。请帮助解决这个问题。

标签: azureazure-data-factoryazure-data-factory-2azure-data-flow

解决方案


您必须将其输出为数组而不是结构。使用没有分组依据的聚合器并使用语法收集所有行(收集函数) - collect(@(FirstName = FirstName, Lastname = LastName.....))。

在这里,您将获得一组结构。您可以将其写入 JSON 接收器。


推荐阅读