在 NiFi 中取消透视 csv,并在 sql 服务器中摄取它



我是NiFi的新手。尝试将 csv 文件引入 sql 服务器,但需要在引入之前取消透视数据。例如:这是原始的csv

Name, Maths, Science, English
Raghav, 60, 70, 80
Nisha, 77, 56, 89

SQL 表的最终输出:

Name, subject, marks
Raghav, Maths, 60
Raghav, Science, 70
Raghav, English, 80
Nisha, Maths, 77
Nisha, Science, 56
Nisha, English, 89

我如何在 NiFi 中实现这一目标。无需临时表

我尝试使用熊猫,但它在 NiFi 中不受支持

Apache NiFi 可以执行此操作,但您需要编写自定义逻辑并使用ExecuteScript处理器。

此过程不是通用的和可重复的,因为从提供的数据中,您不知道"列"类型,以便在输出中提供新的列名。您必须对这些值进行硬编码或从单独的数据源读取它们。

有许多使用 Groovy/Ruby/Python 或其他脚本语言执行转置操作的例子,这就是你在这里要做的。在 Groovy 中,它是List对象List的方法,如 List#transpose() 中所定义。您可以使用简单的 Groovy CSV 处理将 CSV 数据加载到对象中并调用该方法。Matt Burgess 提供了许多示例,使用 ExecuteScript 处理器从流文件中读取数据,对其进行操作,然后将其写回流文件内容并将其发送到后续连接。

最新更新