Support Questions

Find answers, ask questions, and share your expertise

How to add the parent row values to child row in the NIFI flow file?

avatar
New Contributor

Example:
Flowfile data

branches,name,id,acc,serialNo

parent1,abc,123,1234567788,1

child1,eee,345

child2,rrr,678

parent2,mno,786,97865662762,2

child1,ttt,764

child2,ryy,456
output:

parent1,abc,123,1234567788,1

child1,eee,345,1234567788,1

child2,rrr,678,1234567788,1

parent2,mno,786,97865662762,2

child1,ttt,764,97865662762,2

child2,ryy,456,97865662762,2
I have to add the parent last two columns details to Childs of the same parent like parent1 last column details to child1, child2 rows in the flow file.

Please suggest a possible way to use the processor.

1 ACCEPTED SOLUTION

avatar
New Contributor

@kumdollar tree compass wrote:

Example:
Flowfile data

branches,name,id,acc,serialNo

parent1,abc,123,1234567788,1

child1,eee,345

child2,rrr,678

parent2,mno,786,97865662762,2

child1,ttt,764

child2,ryy,456
output:

parent1,abc,123,1234567788,1

child1,eee,345,1234567788,1

child2,rrr,678,1234567788,1

parent2,mno,786,97865662762,2

child1,ttt,764,97865662762,2

child2,ryy,456,97865662762,2
I have to add the parent last two columns details to Childs of the same parent like parent1 last column details to child1, child2 rows in the flow file.

Please suggest a possible way to use the processor.


Hello, @kum 

 

You can achieve this in NiFi using the following approach:

Extract the Parent Values: Use a processor like EvaluateJsonPath or UpdateAttribute to extract the parent last two columns' details from the FlowFile attributes and store them in new attributes.

Merge Parent Values with Child Rows: Use a processor like UpdateRecord or ExecuteScript to merge the parent values with the child rows. You'll need to write a custom script or configuration to append the parent values to each child row based on the parent's ID.

Here's a basic example using UpdateRecord processor:

Configure a schema that includes all columns from both parent and child rows.
Use a Record Reader to read the data.
Use a Record Writer to write the data.
In the UpdateRecord processor, use a RecordPath to conditionally update child rows with parent values based on their ID.
Use RecordPath expressions to refer to parent values.

 

for line in flowfile:
if line.startswith("child"):
# Get parent values from attributes
parent_values = flowfile.getAttribute("parent_values")
# Append parent values to the child row
child_row = line + "," + parent_values
# Write the modified child row to the output FlowFile
output_flowfile.write(child_row)
else:
# If it's a parent row, update the parent values attribute
parent_values = extract_parent_values(line)
flowfile.setAttribute("parent_values", parent_values)

 

 

I hope my suggestion is helpful to you.

 

Best Regard,
angela683h

View solution in original post

2 REPLIES 2

avatar
New Contributor

@kumdollar tree compass wrote:

Example:
Flowfile data

branches,name,id,acc,serialNo

parent1,abc,123,1234567788,1

child1,eee,345

child2,rrr,678

parent2,mno,786,97865662762,2

child1,ttt,764

child2,ryy,456
output:

parent1,abc,123,1234567788,1

child1,eee,345,1234567788,1

child2,rrr,678,1234567788,1

parent2,mno,786,97865662762,2

child1,ttt,764,97865662762,2

child2,ryy,456,97865662762,2
I have to add the parent last two columns details to Childs of the same parent like parent1 last column details to child1, child2 rows in the flow file.

Please suggest a possible way to use the processor.


Hello, @kum 

 

You can achieve this in NiFi using the following approach:

Extract the Parent Values: Use a processor like EvaluateJsonPath or UpdateAttribute to extract the parent last two columns' details from the FlowFile attributes and store them in new attributes.

Merge Parent Values with Child Rows: Use a processor like UpdateRecord or ExecuteScript to merge the parent values with the child rows. You'll need to write a custom script or configuration to append the parent values to each child row based on the parent's ID.

Here's a basic example using UpdateRecord processor:

Configure a schema that includes all columns from both parent and child rows.
Use a Record Reader to read the data.
Use a Record Writer to write the data.
In the UpdateRecord processor, use a RecordPath to conditionally update child rows with parent values based on their ID.
Use RecordPath expressions to refer to parent values.

 

for line in flowfile:
if line.startswith("child"):
# Get parent values from attributes
parent_values = flowfile.getAttribute("parent_values")
# Append parent values to the child row
child_row = line + "," + parent_values
# Write the modified child row to the output FlowFile
output_flowfile.write(child_row)
else:
# If it's a parent row, update the parent values attribute
parent_values = extract_parent_values(line)
flowfile.setAttribute("parent_values", parent_values)

 

 

I hope my suggestion is helpful to you.

 

Best Regard,
angela683h

avatar
New Contributor

Thanks @angela683h  i used the same flow to achieve it and thanks for your support