Azure 数据工厂 - 无名 Json 数组

问题描述 投票:0回答:1

使用返回无名 Json 数组的 API。然后需要将此数据转换为表格格式,以便将其写入数据库。为此,我一直在尝试使用 Azure 数据工厂和展平数据流块。问题在于此块无法获取展开依据或展开根值,因为数组没有名称。我得到的错误是“至少有一个 unrollby 或 unrollMultiple expression expected”。 it won't let me select Unroll information

And in the configuration the unroll is empty

这不是复杂的功能——在数据流的其他部分,ADF 识别列没有问题。输入和输出是正确的。

我已经尝试使用动态内容在展开值中编码,但不确定到底放什么。我试过 body.null 和其他一些

arrays azure rest oracle-adf
1个回答
0
投票

我尝试使用以下示例 JSON,它具有无名数组并得到与您相同的结果。

enter image description here

数据流不是识别无名的JSON值,而是得到剩余的值。

enter image description here

作为解决方法,您可以首先命名您的 JSON 数组并将其存储在任何中间存储(如 Blob)中,并将其提供给数据流。

当您从 API 获取数据时,使用网络活动获取 JSON。在这里,我使用了从 blob 进行的查找,它将为这个演示提供 JSON 对象作为整个数组。

现在,使用设置变量活动将

""
替换为
"<key>"
和以下表达式。

@json(replace(string(activity('Lookup1').output.value),'""','"key1"'))

我已经将上面的 JSON 数组存储在一个数组变量中。根据您的网络活动表达式更改上述表达式(您可以将其作为字符串本身存储在字符串变量中)。

enter image description here

现在,我得到了如下结果。

enter image description here

将其存储在 Blob 存储中的 json 文件中。为此,请使用复制活动。

在 Copy 活动源中使用带有 1 个标题和 1 行的 csv 文件,并在附加列中使用上述结果。

enter image description here

这里我使用了

string(variable('arr')[0])
,因为我从一个数组中获取这个值。如果将替换值存储在字符串中,则可以直接使用它。

对于复制活动接收器,使用具有以下配置的另一个定界文本数据集。

enter image description here

现在,执行管道,你可以看到我们在 Blob 存储中得到了 JSON 文件。

enter image description here

复制活动后,使用数据流活动并将上述 JSON 作为源提供给数据流,您可以根据需要将其展平。

作为另一种选择,使用 SQL 脚本将 JSON 存储到数据库中。在脚本或存储过程活动中使用

openjson()
之类的函数。

© www.soinside.com 2019 - 2024. All rights reserved.