【发布时间】:2020-06-02 14:40:40
【问题描述】:
我正在尝试将 ADF 用于以下场景:
- 将 JSON 上传到 Azure 存储 Blob,其中包含一组类似对象
- 此 JSON 由 ADF 使用 Lookup Activity 读取并通过 Web Activity 上传到外部接收器
我不能使用 Copy Activity,因为我需要为 Web Activity 创建一个 JSON 负载,所以我必须查找数组并像这样粘贴它(Web Activity 的负载):
{
"some field": "value",
"some more fields": "value",
...
"items": @{activity('GetJsonLookupActivity').output.value}
}
查找活动的已知上限为一次 5000 行。如果 JSON 较大,则只会读取 5000 条顶部行,而其他所有行都将被忽略。
我知道这一点,所以我有一个系统,可以在上传到存储之前将有效负载切成 5000 行的块。但我不是唯一的用户,因此有一个合理的担忧,即其他人会尝试上传更大的文件,并且管道将通过部分上传静默通过,而用户显然希望上传所有行。
我想出了两个解决方法的概念,但我不知道如何实现:
我有什么方法可以检查 JSON 文件是否太大,如果是,则使管道失败? Lookup Activity 似乎不允许行计数,Get Metadata Activity 仅返回以字节为单位的大小。
另外,MSDN docs 提出了在 foreach 循环中复制数据的解决方法。但我无法弄清楚如何使用 Lookup 从 JSON 中首先获取 1-5000 行,然后是 5001-10000 行等。使用
OFFSET N FETCH NEXT 5000 ROWS ONLY使用 SQL 很容易,但如何使用 JSON 呢?
【问题讨论】:
标签: json azure azure-blob-storage azure-data-factory