Eric,

I’d recommend using the ConvertRecord processor and the “record” paradigm 
introduced in Apache NiFi 1.2.0. You can read all about it in a series of blog 
posts, but essentially you would use a ConvertRecord processor with a 
CsvRecordReader controller service to translate the incoming rows into a 
generic internal “record” representation in NiFi, and a JsonRecordSetWriter to 
then output those records in JSON format. A simple follow-on ReplaceText can 
add the wrapping syntax around the output. I do believe there is a future 
effort to also provide a configuration in the JSON writer to indicate whether 
each record should be written as a standalone JSON document (existing behavior) 
or as an element in an array (what you are looking for but not currently 
offered).

[1] https://blogs.apache.org/nifi/entry/record-oriented-data-with-nifi
[2] https://blogs.apache.org/nifi/entry/real-time-sql-on-event
[3] 
https://bryanbende.com/development/2017/06/20/apache-nifi-records-and-schema-registries

Andy LoPresto
[email protected]
[email protected]
PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69

> On Dec 13, 2017, at 8:26 AM, ericsm <[email protected]> wrote:
> 
> Hi,
> 
> I'm receiving an orders csv, with a single order spanning multiple rows (one
> item per row):
> order_number, name
> 123, item_1
> 123, item_2
> 
> I need to convert this to a json, whose simplified format is:
> {
> "order_number": "123",
> "items": [
> { "name": "item_1" },
> { "name": "item_2" }
> ]
> }
> 
> Currently to do this I'm passing the entire order CSV into an ExecuteScript
> processor, but would like to know if there is a more 'nifi' way to do this.
> It seems the first step would be to get nifi to recognize an arbitrary
> number of rows as the same record (based on changing order_number), but I
> don't see an obvious way to do that.
> 
> Thanks in advance,
> 
> Eric
> 
> 
> 
> --
> Sent from: http://apache-nifi-users-list.2361937.n4.nabble.com/

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to