我使用 Azure 数据工厂复制语句来获取 API 的输出作为 JSON 文件,并将数据放入突触数据仓库中。 JSON 的布局与下面添加的 JSON 类似,但“值”字段的长度可以超过 10,000 个字符。我在下面添加了一个表格,其中包含我希望的输出。
我确实有一个限制,那就是我无法使用数据流。我知道这是解决此问题的常用方法,但这不是我专门能够使用的解决方案,这就是为什么我在这里询问任何替代解决方案。
感谢任何和所有帮助。
JSON
{
"records": [
{
"id": 1,
"name": "name1",
"values": [
{
"id":20987,
"value": "value1"
},
{
"id":94756,
"value": "value2"
},
{
"id":63009,
"value": "value3"
}
]
},
{
"id": 2,
"name": "name2",
"values": [
{
"id":227272727272,
"value": "value7",
"user": "Greg"
},
{
"id":456787654664,
"value": "value8",
"user": "Tony"
},
{
"id":283749467394,
"value": "value9",
"user": "Maria"
}
]
}
]
}
SQL
id | 名字 | 值.id | 值.值 | 值.用户 |
---|---|---|---|---|
1 | 姓名1 | 20987 | 值1 | 空 |
1 | 姓名1 | 94756 | 值2 | 空 |
1 | 姓名1 | 63009 | 值3 | 空 |
2 | 名称2 | 227272727272 | 值7 | 格雷格 |
2 | 名称2 | 456787654664 | 值8 | 托尼 |
2 | 名称2 | 283749467394 | 值9 | 玛丽亚 |
为了在不使用数据流的情况下压平Json,您可以使用SQL查询脚本。下面是方法。
进行查找活动并获取该活动中的 Json 数据集。
获取复制活动并将其与查找活动按顺序连接。在源代码中,给出以下查询。
DECLARE @json NVARCHAR(max) = N'@{activity('Lookup1').output.value[0].records}';
SELECT
r.id,r.name,v.id AS [values.id],
v.value AS [values.value]
FROM
OPENJSON(@json) WITH (
id INT,
name VARCHAR(50),
[values] NVARCHAR(MAX) AS JSON
) AS r
CROSS APPLY OPENJSON(r.[values]) WITH (
id VARchar(100),
value VARCHAR(50)
) AS v;
这将确保 Json 被展平并复制到 SQL 表。 注意:您的数据没有关系数据。 id=1 时缺少
user
字段;这里我们只能把关系数据扁平化。确保所有行项目的数据结构相同。