Azure数据工厂-SQL到嵌套JSON

Azure数据工厂-SQL到嵌套JSON,sql,json,azure,azure-data-factory,Sql,Json,Azure,Azure Data Factory,我有一个SQL数据库,其中包含员工和约会表(1名员工:多个约会)。我想使用Azure Data Factory将其输出到Blob存储中的嵌套JSON,格式类似于以下内容: [ { "staffid":"101", "firstname":"Donald", "lastname":"Duck", "appointments":[ { "appointmentid":"201",

我有一个SQL数据库,其中包含员工和约会表(1名员工:多个约会)。我想使用Azure Data Factory将其输出到Blob存储中的嵌套JSON,格式类似于以下内容:

[
   {
      "staffid":"101",
      "firstname":"Donald",
      "lastname":"Duck",
      "appointments":[
         {
            "appointmentid":"201",
            "startdate":"2020-02-01T00:00:00",
            "enddate":"2020-04-29T23:00:00"
         },
         {
            "appointmentid":"202",
            "startdate":"2020-01-01T00:00:00",
            "enddate":"2020-01-31T00:00:00"
         }
      ]
   },
   {
      "staffid":"102",
      "firstname":"Mickey",
      "lastname":"Mouse",
      "appointments":[
         {
            "appointmentid":"203",
            "startdate":"2020-02-01T00:00:00",
            "enddate":"2020-04-29T23:00:00"
         },
         {
            "appointmentid":"204",
            "startdate":"2020-01-01T00:00:00",
            "enddate":"2020-01-31T00:00:00"
         }
      ]
   }
]

我尝试过使用Copy活动,但这会生成平面JSON结构,而不是上面描述的嵌套结构。有人有办法做到这一点吗?

ADF中JSON数据的更多场景正在变平。然而,根据您的描述,您需要生成JSON,它包含由一些列组成的JSON数组组。类似于由same
staff
合并
appointment things

如果我的理解是正确的,那么你可以从我之前的案例中得到一些线索:。请参考我的测试:

模拟您的示例数据:

在sql db源数据集中使用sql:

select app.staffid,app.firstname,app.lastname,
'appointments' = (
            SELECT
                appointmentid AS 'appointmentid',startdate as 'startdate',enddate as 'enddate'
            FROM
                dbo.appoint as app2
            where app2.staffid = app.staffid and
            app2.firstname = app.firstname and
            app2.lastname = app.lastname
            FOR JSON PATH)
from dbo.appoint as app
group by app.staffid,app.firstname,app.lastname
FOR JSON Path;

blob存储中的输出:

我尝试验证json格式是否正确


请提供有关您需要帮助的更多信息。它是如何在SQL Server和Azure Data factory之间建立连接的?如何在DF中设置作业以提取数据并生成json?这个问题非常广泛,通过将其缩小到细节,你更有可能变得更好answers@EdBoykin感谢您回复我-我特别想找到一种生成嵌套JSON的方法,其中Staff对象包含一个约会数组。我已经将ADF连接到SQL并生成了平面JSON记录,但是我想知道一种输出嵌套记录的方法。非常感谢-您知道是否有方法可以删除包装JSON结构的引号/unescape JSON结构中的引号?否则,它随后会被解析为单个长字符串,而不是单个JSON对象?@Chris引号是由sql生成的,不能被sql删除。但是,您可以对json字符串执行操作。例如,使用blob触发器azure函数。如果有任何文件生成到容器中,它将由触发器函数格式化。@无论如何,我可以在这里提供一个变通方法供您参考。@JayGong没有办法在不使用列名、其他不必要的引号和其他不必要的转义符()的情况下输出JSON?@JayGong谢谢-我将尝试使用该函数来删除所有额外的引号/列名