繁体   English   中英

使用 Azure 数据工厂将嵌套的 JSON 复制到 Azure sql

[英]Copy nested JSON to Azure sql with Azure Data Factory

我有一个嵌套的 JSON 存储在 Azure 上的数据湖中,它具有以下格式:

    {"proto": "01",
     "type": "A",

 "description": "heartbeat",
 "geometry": {"y0_1": {"tag": "Normal",
   "probability": 0.40,
   "x": 39,
   "y": 13},
  "y0_2": {"tag": "category_3", "probability": 0.8, "x": 48, "y": 13},
  "y0_3": {"tag": "Normal", "probability": 0.9, "x": 27, "y": 10},
"Test": {"proba": 0.65}}}

我想创建 ADF Pipeline(带触发器)以将其从 Data Lake 移动到 Azure Sql。 问题是当我创建一个副本 Activity 时,ADF 无法识别该映射,它创建了一个包含 4 列的表:proto、type、description,但第 4 个几何图形在一行中包含所有其余的 json 文件。 虽然我想有一个这种格式的输出表:

proto    type    description    tag       probability    x    y     proba
01        A      heartbeat      Normal     0.40          39   13     0.65
01        A      heartbeat      category_3 0.8           48   13     0.65
01        A      heartbeat      Normal     0.9           27   10     0.65

我尝试使用 CROSS APPLY 工具直接在 SQL 上解析 json,但是我无法使用 ADF 上想要的映射直接将 JSON 从 ADLS 复制到 SQL 如果有人有一些指导或我可以遵循的任何想法,它将是非常感激

根据我的经验,数据工厂不适用于嵌套的 json。

为了获得预期的输出,您可能需要创建三个副本活动来实现这一点。 每个活动都具有相同的源和汇。 并首先在接收器数据库中创建表。

管道概述: 在此处输入图片说明

不同之处在于每个活动副本中的映射设置。

复制active1:将数据geometry.y0_1复制到sink: 在此处输入图片说明

复制 active2:将数据geometry.y0_2复制到 sink: 在此处输入图片说明

复制 active3:将数据geometry.y0_3复制到 sink: 在此处输入图片说明

汇表中的输出数据: 在此处输入图片说明

其他一些方法,您可以在数据库中创建一个存储过程来处理 JSON 数据,在 sink 中选择存储过程,如下所示: 在此处输入图片说明

感谢 Leon Yao 的回答,唯一的问题是我有一个很长的 json,而且我无法手动创建许多复制活动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM