【问题标题】:How to convert Excel to JSON in Azure Data Factory?如何在 Azure 数据工厂中将 Excel 转换为 JSON?
【发布时间】:2022-07-17 15:47:57
【问题描述】:

我想转换这个在一个工作表中包含两个表格的 Excel 文件

转成这种 JSON 格式

{

parent:
{
    "P1":"x1",
    "P2":"y1",
    "P3":"z1"
}
children: [
{"C1":"a1", "C2":"b1", "C3":"c1", "C4":"d1"},
{"C1":"a2", "C2":"b2", "C3":"c2", "C4":"d2"},
...
]
}

然后将 JSON 发布到 REST 端点。

如何执行映射和发布到 REST 服务?

此外,我似乎需要先将 JSON 接收到物理 JSON 文件,然后才能将其作为有效负载发布到 REST 服务 - 这个物理接收步骤是必要的还是可以保存在内存中?

我无法使用查找活动来读取 Excel 文件,因为它被限制为 5,000 行和 4MB。

【问题讨论】:

    标签: json azure-data-factory-2


    【解决方案1】:

    我设法在 ADF 中完成,解决方案有点长,但您可以使用 azure 函数以编程方式完成。

    这是我构建的一个快速演示:

    主要思想是拆分数据,根据请求添加标题,然后重新加入数据并添加相关键,如父母和孩子。

    ADF:

    1. 添加了条件连接以拆分数据(见附图)。
    2. 为每个表添加代理键。
    3. 过滤第一行以使 csv 中的标题变为红色。
    4. 映射子/父列:使用派生列活动重命名列
    5. 在子数据流中添加了常量值,因此我可以通过它进行聚合并将 CSV 转换为复杂的数据类型。
    6. childrenArray:在派生列中,将子列添加到名为 Children 的新列中,并在值中添加相关列。
    7. 使用常量值聚合子 Json。
    8. 在父数据流中:映射列后,我使用派生列创建了 jsons。(请参阅附图)。
    9. 将子数组和父 json 合并到一个表中,以便将其转换为请求的 Json。
    10. 写到缓存的接收器(在这里你可以做发布请求而不是写到接收器)。

    数据流:

    ![在此处输入图片描述

    活动:

    条件拆分:

    AddSurrogateKey:

    (父数据流也一样,只是改变传入流的名称,如上面的数据流所示)

    FilterFirstRow:

    MapChildrenColumns:

    MapParentColumns:

    添加常量值:

    PartentsJson: 在这里,我在 Expression Builder 中添加了子列,并将列名作为值发送,这将构建父 json。

    儿童数组: 再次在派生列中,添加名为“children”的列 并在表达式生成器中添加了相关列。

    聚合:

    此活动的目的是聚合子 Json 并构建数组,没有它您将无法获得数组。 聚合函数是collect()。

    参加活动: 在这里,我添加了一个外部连接来加入父母 json 和孩子数组。

    选择相关列:

    输出:

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多