Apache NiFi:使用映射值将列添加到 csv
Apache NiFi: Add column to csv using mapped values
使用 GetFile 处理器将 csv 引入 NiFi 工作流程。我有一个由 "id" 组成的列。每个 id 表示一个特定的字符串。大约有 3 个 ID。例如,如果我的 csv 包含
name,age,id
John,10,Y
Jake,55,N
Finn,23,C
我知道 Y 表示 York,N 表示 Old,C 表示 Cat。我想要一个名为 "nick" 的 header 的新列,并且每个 ID 都有相应的昵称。
name,age,id,nick
John,10,Y,York
Jake,55,N,Old
Finn,23,C,Cat
最后我想要一个包含额外列和每条记录的适当数据的 csv。这怎么可能使用 Apache NiFi。请告诉我必须使用的处理器和必须更改的配置才能完成此任务。
流量:
- 添加一个新的昵称栏
- 将 id 复制到昵称栏
- 查看每一行并将 id 与其对应的值匹配
- 将此值设置为昵称列中的当前行
您可以使用 ReplaceText or ReplaceTextWithMapping 来实现。我使用 ReplaceText:
UpdateRecord 将解析 csv 文件,添加新列并复制 id 值:
创建一个 CSVReader
并保留默认属性。创建一个 CSVRecordSetWriter
并将 Schema 访问策略设置为 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"
}
]
}
请注意它有新列。最后用映射替换原始值:
PS:我注意到你是 SO 的新手,欢迎!在您之前的任何问题中,您都没有接受一个单一的答案。如果他们解决了您的问题,请接受他们,因为这将帮助其他人找到解决方案。
使用 GetFile 处理器将 csv 引入 NiFi 工作流程。我有一个由 "id" 组成的列。每个 id 表示一个特定的字符串。大约有 3 个 ID。例如,如果我的 csv 包含
name,age,id
John,10,Y
Jake,55,N
Finn,23,C
我知道 Y 表示 York,N 表示 Old,C 表示 Cat。我想要一个名为 "nick" 的 header 的新列,并且每个 ID 都有相应的昵称。
name,age,id,nick
John,10,Y,York
Jake,55,N,Old
Finn,23,C,Cat
最后我想要一个包含额外列和每条记录的适当数据的 csv。这怎么可能使用 Apache NiFi。请告诉我必须使用的处理器和必须更改的配置才能完成此任务。
流量:
- 添加一个新的昵称栏
- 将 id 复制到昵称栏
- 查看每一行并将 id 与其对应的值匹配
- 将此值设置为昵称列中的当前行
您可以使用 ReplaceText or ReplaceTextWithMapping 来实现。我使用 ReplaceText:
UpdateRecord 将解析 csv 文件,添加新列并复制 id 值:
创建一个 CSVReader
并保留默认属性。创建一个 CSVRecordSetWriter
并将 Schema 访问策略设置为 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"
}
]
}
请注意它有新列。最后用映射替换原始值:
PS:我注意到你是 SO 的新手,欢迎!在您之前的任何问题中,您都没有接受一个单一的答案。如果他们解决了您的问题,请接受他们,因为这将帮助其他人找到解决方案。