在NiFi中unpivot csv并在sql server中获取它

时间:2017-10-12 21:18:47

标签: python apache-nifi

我是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不支持

1 个答案:

答案 0 :(得分:3)

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

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

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