我是NiFi的新手。尝试将csv文件摄取到sql server但需要在摄取之前取消数据。 例如: 这是原始的csv
Name, Maths, Science, English
Raghav, 60, 70, 80
Nisha, 77, 56, 89
sql table的最终输出:
Name, subject, marks
Raghav, Maths, 60
Raghav, Science, 70
Raghav, English, 80
Nisha, Maths, 77
Nisha, Science, 56
Nisha, English, 89
如何在NiFi中实现这一目标。无需临时表
我尝试过使用pandas,但NiFi不支持
答案 0 :(得分:3)
Apache NiFi可以执行此操作,但您需要编写自定义逻辑并使用{{1}}处理器。
此过程不是通用的&可重复,因为从提供的数据中,您不知道“列”类型,以便在输出中提供新的列名。您必须对这些值进行硬编码或从单独的数据源中读取它们。
有许多使用Groovy / Ruby / Python或其他脚本语言来执行转置操作的示例,这是您要在此处执行的操作。在Groovy中,它是ExecuteScript
List
个List
个对象的方法,如List#transpose()中所定义。您可以使用简单的Groovy CSV处理将CSV数据加载到对象中并调用该方法。 Matt Burgess提供了许多示例using the ExecuteScript
processor来读取流文件中的数据,对其进行操作,并将其写回到流文件内容并将其发送到后续连接。