我得到一个原始的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
我使用了ReplaceTextWithMapping,但是它替换了包括id列在内的所有1,2,3值。
Here它定义了替换值,但是我想映射并向记录添加新列。
编辑:
答案 0 :(得分:2)
使用ReplaceTextWithMapping。总体流量:
GenerateFlowFile:
UpdateRecord:
配置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"
}
]
}
请注意,它包括新列。 ReplaceTextWithMapping:
映射文件内容:
1 1S
2 3S
3 4S
值由制表符分隔。正则表达式必须与最后一行的值匹配,且每行后面都不能有逗号:
[0-9](?!,)
结果: