我已经为此工作了几天,并正在寻求帮助。我无法正确构建格式并需要帮助。
我一直在尝试使用表达式生成器在 Azure 数据工厂 (ADF) 中创建 JSON 结构,但遇到错误。这是我想要实现的 JSON 结构:
{
"entity_id": "value1",
"link_id": "value2",
"url": "value3",
"actions": [
{
"appointment_info": {}
}
]
}
在表达式生成器中,我将其结构如下:
@(entity_id=entity_id,
link_id=link_id,
url=url,
actions=[@(appointment_info=@())])
但是,我在
actions=[@(appointment_info=@())]
行收到错误,特别是在 @()
之后的 appointment_info=
处。这应该可行,但 ADF 中仍然显示错误,并且我无法按预期构建它:
"actions": [
{
"appointment_info": {}
}
]
有人可以帮助我了解我做错了什么以及如何在 ADF 的表达式生成器中正确格式化此 JSON 结构吗?任何指导将不胜感激。
但是,我在
行收到错误,特别是在actions=[@(appointment_info=@())]
@()
之后的appointment_info=
处
我尝试了相同的表达式,它说解析错误不正确。似乎 ADF 数据流派生列表达式不支持空
objects
。
如果您有权访问 Blob 或 Gen2 存储帐户,您可以尝试以下解决方法来满足要求。
首先在派生列转换中使用以下表达式。
replace(toString(@(entity_id=entity_id,
link_id=link_id,
url=url,
actions=[@(appointment_info='my_str')])),'"my_str"','{}')
由于不支持空对象,上面的表达式首先生成所需的 JSON,并用
"my_str"
字符串代替 {}
。然后将其替换为 {}
并获取列中的 JSON 字符串。
接下来,使用选择转换并删除多余的列。
在数据流接收器中,获取分隔文本数据集并提供以下配置。该数据集应来自 Gen2 或 blob。
不要在数据集中为此提供任何文件名。在数据流接收器设置中将文件名指定为
filename.json
。
在这里,我们使用分隔文本数据集从我们创建的 JSON 字符串生成 JSON 文件。当我们取消选中 First row as header 时,它将按预期提供 JSON 文件。
结果文件:
但是稍后在 ADF 中使用此文件时,您需要创建另一个指向此位置的 JSON 数据集。