0

I get a raw csv file which looks like this

id,name,star
1,sachith,2
2,nalaka,1
3,abc,3

I want to map star column with another file where it has

1  1S
2  3S
3  5S

and finally csv should look like

id,name,star,level
1,sachith,2,3S
2,nalaka,1,1S
3,abc,3,5S

I have used ReplaceTextWithMapping, but it replaces all the 1,2,3 values including in id column.

Here it defines replacing a value, but I want to map and add a new column to the record.

Edit:

After @Upvote's answer. My ReplaceTextWithMapping conf enter image description here

1 Answer 1

2

Use ReplaceTextWithMapping. Overall flow:

enter image description here

GenerateFlowFile:

enter image description here

UpdateRecord:

enter image description here

Configure CSVReader to treat first line as header. Leave other properties untouched. Configure CSVRecordSetWrite to treat first line as header, schema to be derived from schema text property and set schema text to:

{
   "type":"record",
   "name":"foobar",
   "namespace":"my.example",
   "fields":[
      {
         "name":"name",
         "type":"string"
      },
      {
         "name":"age",
         "type":"int"
      },
      {
         "name":"id",
         "type":"string"
      },
      {
         "name":"nick",
         "type":"string"
      }
   ]
}

Notice that it includes the new column. ReplaceTextWithMapping:

enter image description here

Mapping file content:

1   1S
2   3S
3   4S

Values are separated by tab. Regex must match the last value not followed by a comma in each line:

[0-9](?!,)

Regular expression visualization

Debuggex Demo

Result:

enter image description here

Sign up to request clarification or add additional context in comments.

4 Comments

When I follow these steps, final result row looks like 1,sachith,2,2, where final 2 should be 3S.
@Sachith you have to replace ,2 with ,3S. Use ReplaceTextWithMapping or ReplaceText as described in the linked answer.
Yes, I used ReplaceTextWithMapping processor. But final result same.
Share your ReplaceTextWithMapping config.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.