我是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
处理器从流文件中读取数据,对其进行操作,然后将其写回流文件内容并将其发送到后续连接。