NiFi: Merge an Attribute into the Flow-file's JSON Content (without overwriting the entire flowfile)
Asked Answered
A

1

5

I have a flow that creates some new attributes / content. I want to take an attribute from the flow files, and add it into the JSON content of the file.

I can use AttributesToJSON, but that just overwrites the file content.

A sample of my flow is here:

enter image description here

The UpdateAttribute adds current time to the attribute list, and then the AttributestoJSON adds an attribute to the actual JSON, but it also overwrites the entire flow file content. I've tried to remedy this with MergeRecord, but I can't the two files to merge back together (using CurrentTime as a Correlation Attribute Name).

Is there a better to go about this? The MergeRecord just comes up with an error. (Also not sure how to configure the RecordReader/Writer, because I want to keep everything in JSON).

Aideaidedecamp answered 7/11, 2018 at 21:59 Comment(0)
H
13

Use UpdateRecord and add a property where the name is the field you want to update like "/currentTime" and the value is the expression language reference to the attribute like ${currentTime}, assuming you set currentTime in UpdateAttribute.

Hals answered 7/11, 2018 at 22:13 Comment(4)
So I was really reaching towards complexity for no reason... I'm dumb. Thanks for the help!Aideaidedecamp
Question: I want to keep it JSON, so for the reader/writers, what's the best method? JSONTree or Path?Aideaidedecamp
JsonTreeReader, you would only use JsonPathReader if you want to specify specific paths from the json, the tree reader just reads everythingHals
is there a way to write into a nested object within the target json. Something like /currentTime/barEnterprising

© 2022 - 2024 — McMap. All rights reserved.