如何将所有 JSON 行封装在 ADF 中的一个 JSON 列中

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

您好,我从 odbc 连接获取 csv 格式的数据,然后使用 json 数据集将其复制到 Blob 它看起来像这样,而不是实际数据,它将有超过 20K 行

{"A":12345,"B":"2023-12-31 00:00:00","C":5510,"D":20231231,"E":20240103,"F":20231231,"G":1577158,"H":63217,"I":null,"J":"Company123","K":"SupplierXYZ","L":"987","M":"Vendor ABC","N":"Invoice789","O":"2023-12-31T00:00:00","P":"2024-01-03T00:00:00","Q":"2023033344","R":"7559","S":"Dept123","T":"ModelXYZ","U":7179.0,"V":3,"W":"3769686.0","X":"TypeJ","Y":7179.0,"Z":null,"AA":"NOK","AB":"202312.0","AC":"EXTERNAL","AD":null,"AE":"Counterparty999","AF":"2023-12-31T00:00:00","AG":null,"AH":null,"AI":"66c6c4cc31107992a4079f3653a8a86930a2675d8663c5ab2ec4df23b0f6f3b0","AJ":"2024-02-13T12:58:02.597","AK":"2024-01-03T08:31:16.425292"}
{"A":54321,"B":"2024-01-15 08:00:00","C":7890,"D":20240115,"E":20240120,"F":20240115,"G":2468135,"H":951753,"I":null,"J":"Company456","K":"Supplier789","L":"123456789","M":"Vendor XYZ","N":"Invoice123","O":"2024-01-15T08:00:00","P":"2024-01-20T08:00:00","Q":"2024011515","R":"1234","S":"Dept456","T":"ModelABC","U":9876.0,"V":6,"W":"9876543.0","X":"TypeK","Y":9876.0,"Z":null,"AA":"USD","AB":"202401.0","AC":"INTERNAL","AD":null,"AE":"Counterparty888","AF":"2024-01-15T08:00:00","AG":null,"AH":null,"AI":"a1b2c3d4e5f6g7h8i9","AJ":"2024-02-15T08:00:00.123","AK":"2024-01-20T08:00:00.987654"}

现在我希望改造后的最终结果是这样的

{
    "Id": "a parameter",
    "Name": uuid;
    "data": Json array from the source
}

我需要将所有 Json 行封装到这个数据列中。之后我可以使用网络活动将其提供给 API 那么我应该如何在数据流中转换这些数据。

azure azure-data-factory
1个回答
0
投票

您可以使用 查找活动 读取 Json 文件并进行复制活动以添加其他列 id、名称以及 Json 数据。下面是方法。

  • 进行查找活动并将 Json 文件作为分隔数据集。给出不同的分隔符,以便所有数据都位于单行中。

  • 获取复制活动并将其与第一个查找活动按顺序连接。
  • 在源数据集中,采用一行虚拟数据集。在源设置中添加其他列。

  1. id:此处给出参数名称
  2. 数据:
    @activity('Lookup1').output.value[0].Prop_0
  3. 姓名:
    @guid()
  • 在映射部分,仅映射所需的三列。删除所有剩余的列。

  • 添加接收器数据集。

  • 将根据需要运行管道和接收器数据集。

此方式适用于不超过4MB的Json数据。请参阅查找活动支持的功能

如果您的数据超过4MB,数据流是满足要求的唯一选择。

  • 以源码改造为例。采用与第一种方法的查找活动相同的源数据集。
  • 采用派生列转换和新的附加列 id、名称和数据。

数据流方法:

  • 进行选择转换并仅选择以上三列。

  • 使用sink Json数据集进行sink转换。

  • 根据需要使用数据流和接收器 Json 运行管道。

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