如何使用Azure数据工厂将CSV转换为嵌套JSON数组?

aydmsdu9  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(182)

我面临着一个非常有趣的任务,要将任意CSV文件转换为JSON结构,并遵循以下模式:

{
    "Data": [
        ["value_1", "value_2"],
        ["value_3", "value_4"]
    ]
}

在这种情况下,输入文件将如下所示:

value_1,value_2
value_3,value_4

要求是使用Azure数据工厂,我无法将此任务委托给Azure功能或其他服务。我正在考虑使用“复制数据”活动,但无法了解配置。TabularTranslator似乎只能处理固定数量的列,但我可以接收的CSV可以包含任意数量的列。也许DataFlows可以帮助我,但它们的设置不能。另外,如果我理解正确的话,DataFlows需要更多的时间来启动。
因此,基本上,我只需要将CSV内容放入“Data”2d数组中。
你有什么想法吗?

7nbnzgx9

7nbnzgx91#

为了达到这个要求,使用Copy dataTabularTranslator是很复杂的。这可以通过以下方式使用数据流来实现。

  • 首先使用以下配置创建一个源数据集。这允许我们将整行作为单个列值(字符串)读取:

  • 导入投影并将列命名为data。数据预览如下所示:

  • 现在,首先使用derived column转换中的split函数拆分这些列值。我将使用split(data,',')替换同一列。

  • 然后,我添加了一个带有常量值“x”的key列,这样我就可以对所有行进行分组,并将分组后的数据转换为数组的数组。

  • 执行上述步骤后,数据将如下所示:


指令集

  • 使用aggregate转换按上面创建的列分组,并使用collect聚合函数创建数组的数组(collect(data))。

  • 使用select转换仅选择上面创建的列Data


指令集

  • 最后,在sink中,选择目标并创建一个sink JSON数据集。

  • 创建数据流管道活动并运行上面的数据流。将创建如下所示的文件:


指令集

相关问题