使用ApacheNIFI使用预定义文件将列添加到csv
我得到了一个原始csv文件,看起来像这样使用ApacheNIFI使用预定义文件将列添加到csv,csv,validation,apache-nifi,Csv,Validation,Apache Nifi,我得到了一个原始csv文件,看起来像这样 id,name,star 1,sachith,2 2,nalaka,1 3,abc,3 我想用另一个文件映射星号列 1 1S 2 3S 3 5S 最后,csv应该是这样的 id,name,star,level 1,sachith,2,3S 2,nalaka,1,1S 3,abc,3,5S 我使用了,但它替换了id列中包含的所有1,2,3值 它定义替换一个值,但我想映射并向记录中添加一个新列 编辑: 在@Upvote的回答之后。我的Replac
id,name,star
1,sachith,2
2,nalaka,1
3,abc,3
我想用另一个文件映射星号列
1 1S
2 3S
3 5S
最后,csv应该是这样的
id,name,star,level
1,sachith,2,3S
2,nalaka,1,1S
3,abc,3,5S
我使用了,但它替换了id列中包含的所有1,2,3值
它定义替换一个值,但我想映射并向记录中添加一个新列
编辑:
在@Upvote的回答之后。我的ReplaceTextWithMapping conf
使用。总流量:
GenerateFlowFile:
更新记录:
配置CSVReader
将第一行视为标题。保持其他财产不变。配置CSVRecordSetWrite
将第一行作为标题,将架构从架构文本属性派生,并将架构文本设置为:
{
"type":"record",
"name":"foobar",
"namespace":"my.example",
"fields":[
{
"name":"name",
"type":"string"
},
{
"name":"age",
"type":"int"
},
{
"name":"id",
"type":"string"
},
{
"name":"nick",
"type":"string"
}
]
}
请注意,它包括新列。用映射替换文本:
映射文件内容:
1 1S
2 3S
3 4S
值由制表符分隔。正则表达式必须与最后一个值匹配,且每行中不后跟逗号:
[0-9](?!,)
结果:
使用。总流量:
GenerateFlowFile:
更新记录:
配置CSVReader
将第一行视为标题。保持其他财产不变。配置CSVRecordSetWrite
将第一行作为标题,将架构从架构文本属性派生,并将架构文本设置为:
{
"type":"record",
"name":"foobar",
"namespace":"my.example",
"fields":[
{
"name":"name",
"type":"string"
},
{
"name":"age",
"type":"int"
},
{
"name":"id",
"type":"string"
},
{
"name":"nick",
"type":"string"
}
]
}
请注意,它包括新列。用映射替换文本:
映射文件内容:
1 1S
2 3S
3 4S
值由制表符分隔。正则表达式必须与最后一个值匹配,且每行中不后跟逗号:
[0-9](?!,)
结果:
当我执行这些步骤时,最终结果行看起来像
1,sachith,2,2
,其中final 2应该是3S。@sachith必须用3S替换,2。使用链接答案中描述的ReplaceTextWithMapping或ReplaceText。是的,我使用了ReplaceTextWithMapping
processor。但最终结果相同。请与Mapping config共享您的ReplaceText。当我执行这些步骤时,最终结果行看起来像1,sachith,2,2
,其中final 2应该是3S。@sachith您必须将2替换为3S。使用链接答案中描述的ReplaceTextWithMapping或ReplaceText。是的,我使用了ReplaceTextWithMapping
processor。但最终结果相同。请使用映射配置共享您的ReplaceText。