gpt4 book ai didi

azure - ADF 对行进行分组并将每个组存储在单独的文件中

转载 作者:行者123 更新时间:2023-12-03 03:49:45 26 4
gpt4 key购买 nike

我正在尝试使用 Azure 数据工厂 (ADF) 解决数据问题,而且快要成功了,但我一直陷入困境。

我们正在尝试处理 EventHub 捕获文件,将它们分组到多个字段中,并将每个分组存储在单独的文件中。

所以,假设这是我们的 Avro 文件中的数据(我跳过默认的 EventHub 捕获列,如 EnqueuedTimeUtc 和 SequenceNumber):

[
{"Body": "{\"DataType\": \"Type1\", \"DataVersion\": 1, \"id\": 1}"},
{"Body": "{\"DataType\": \"Type1\", \"DataVersion\": 1, \"id\": 2}"},
{"Body": "{\"DataType\": \"Type1\", \"DataVersion\": 2, \"id\": 3}"}
]

我想将此数据拆分为单独的文件,其中包含基于数据类型和版本以及数据日期的路径,以及每行 1 个 json 对象。所以,像这样:

/Type1/1/2021-04-22.json
{"DataType": "Type1", "DataVersion": 1, "id": 1}
{"DataType": "Type1", "DataVersion": 1, "id": 2}

到目前为止,我有以下步骤:

  • 读取 Avro 文件的源
  • 解析 JSON 步骤,从正文中读取 DataType 和 DataVersion,并将它们作为附加列 ParsedBody.DataType 和 ParsedBody.DataVersion 附加。
  • 分组步骤,按 ParsedBody.DataType 和 ParsedBody.DataVersion 进行分组,并使用 collect(Body) 进行聚合
  • 派生列步骤,添加带有文件名的列 (ParsedBody.DataType + "/"+ ParsedBody.DataVersion + "/"+ $year + ""+ $month + ""+ $day + ".json"
  • 存储为 blob 的接收器,以文件名列作为文件名。

这将存储每个文件的组,但不是我想要的格式。它像这样存储它:

{
"DataType": "Type1",
"DataVersion": 1,
"Body": [
"{\"DataType\": \"Type1\", \"DataVersion\": 1, \"id\": 1}",
"{\"DataType\": \"Type1\", \"DataVersion\": 1, \"id\": 2}"
]
}

而且,正如我所说,我想要每行 1 个 json 对象(不是字符串)。

这在数据工厂中是否可行,或者我使用了错误的工具?如果是这样,怎么办?

最佳答案

所有这些原语(包括从 avro 读取)都位于 ADF 数据流中。使用 Parse Tx 解析 json,使用 flatten 进行扁平化。使用 Sink 分区写入多个文件。

关于azure - ADF 对行进行分组并将每个组存储在单独的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67209409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com