Apache nifi ApacheNIFI:使用映射值将列添加到csv

Apache nifi ApacheNIFI:使用映射值将列添加到csv,apache-nifi,data-processing,Apache Nifi,Data Processing,使用GetFile处理器将csv引入NiFi工作流。我有一个由“id”组成的列。每个id表示一个特定的字符串。大约有3个身份证。例如,如果我的csv包含 name,age,id John,10,Y Jake,55,N Finn,23,C 我知道Y代表约克,N代表老,C代表猫。我想要一个标题为“nick”的新列,并且每个id都有相应的nick name,age,id,nick John,10,Y,York Jake,55,N,Old Finn,23,C,Cat 最后,我想要一个包含额外列和每条

使用GetFile处理器将csv引入NiFi工作流。我有一个由“id”组成的列。每个id表示一个特定的字符串。大约有3个身份证。例如,如果我的csv包含

name,age,id
John,10,Y
Jake,55,N
Finn,23,C
我知道Y代表约克,N代表老,C代表猫。我想要一个标题为“nick”的新列,并且每个id都有相应的nick

name,age,id,nick
John,10,Y,York
Jake,55,N,Old
Finn,23,C,Cat
最后,我想要一个包含额外列和每条记录的适当数据的csv。如何使用ApacheNIFI实现这一点。为了完成此任务,请就必须使用的处理器和必须更改的配置向我提供建议

流量:

  • 添加一个新的尼克列
  • 将id复制到尼克列
  • 查看每一行并将id与其对应的值进行匹配
  • 将此值设置为尼克列中的当前行
您可以使用或来实现这一点。我使用ReplaceText执行此操作:

UpdateRecord将解析csv文件,添加新列并复制id值:

创建一个
CSVReader
,并保留默认属性。创建一个
CSVRecordSetWriter
,并将架构访问策略设置为
Schema Text
。将架构文本属性设置为

{
   "type":"record",
   "name":"foobar",
   "namespace":"my.example",
   "fields":[
      {
         "name":"name",
         "type":"string"
      },
      {
         "name":"age",
         "type":"int"
      },
      {
         "name":"id",
         "type":"string"
      },
      {
         "name":"nick",
         "type":"string"
      }
   ]
}
请注意,它有一个新列。最后用映射替换原始值:

我注意到你是新来的,欢迎!您之前的任何问题都没有接受过一个答案。如果他们解决了你的问题,接受他们,因为这将帮助其他人找到解决方案。

流程:

  • 添加一个新的尼克列
  • 将id复制到尼克列
  • 查看每一行并将id与其对应的值进行匹配
  • 将此值设置为尼克列中的当前行
您可以使用或来实现这一点。我使用ReplaceText执行此操作:

UpdateRecord将解析csv文件,添加新列并复制id值:

创建一个
CSVReader
,并保留默认属性。创建一个
CSVRecordSetWriter
,并将架构访问策略设置为
Schema Text
。将架构文本属性设置为

{
   "type":"record",
   "name":"foobar",
   "namespace":"my.example",
   "fields":[
      {
         "name":"name",
         "type":"string"
      },
      {
         "name":"age",
         "type":"int"
      },
      {
         "name":"id",
         "type":"string"
      },
      {
         "name":"nick",
         "type":"string"
      }
   ]
}
请注意,它有一个新列。最后用映射替换原始值:

我注意到你是新来的,欢迎!您之前的任何问题都没有接受过一个答案。接受他们,如果他们解决了你的问题,因为这将帮助其他人找到解决方案