Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Passing data flow to a subjob

Hi,
I have a main job where i split according some conditions (trough a tmap) my flow into 2 flows and each of the flow should be processed by a subjob. How can i perform this action ? is it possible to pass a flow(not context) to a subjob ?
thank you for the answer
Best regards
Labels (2)
18 Replies
Anonymous
Not applicable
Author

Thank you kzone for the tip !!
Regards
Anonymous
Not applicable
Author

That is another solution kzone, but that limits the child job to just processing one row at a time. Much simpler if that is all that is needed. But my assumption was that a complete data set is needed.
Anonymous
Not applicable
Author

@rhall
aggree with you, and not a good solution. But it don't require any skills about java code.(@sofbar I am a beginner in java )
i'd like to Store on disk or database for that kind of stuff 0683p000009MACn.png
easy for unit test, debug & recovery error ... 0683p000009MA9p.png
regards
laurent
Anonymous
Not applicable
Author

rhall,
this is the pattern of my jobs:
PARENT job: tfileinputdelimited===>tjavarow====>trunjob1
CHILD job : tjavaflex====> tfileoutpudelimited
in the tjavarow i am populating the arraylist.
in the tjavaflex i am populating columns of the output flow from the context param.
In the above case  i am transmitting to the child job row by row , right ? 
As you suggested i wanted the child job to process the whole set.
Best Regards
Anonymous
Not applicable
Author

Your job pattern is nearly there sofbar. However, you are likely passing the data like below to child job....
Row 1
1,2,3,4,5,6
Row 2
1,2,3,4,5,6
a,b,c,d,e,f
Row 3
1,2,3,4,5,6
a,b,c,d,e,f
1,2,3,4,5,6
.....
The first row will call the trunjob with the ArrayList with one row of data. The second row will call the trunjob with the ArrayList with the first and second row of data. The third row will call the trunjob with the ArrayList with the first, second and third rows of data, etc. To avoid this try out a pattern like below.....

PARENT Job: tFileInputDelimited===>tJavaRow===>tJava (Dummy component-does nothing)
                   ||
                 OnSubjobOK
                   ||
                   tJava(Dummy - does nothing) ----OnComponentOK-->tRunJob
CHILD Job: tJavaFlex ====>tFileOutputDelimited
This may need some tweaking, but hopefully you get the idea
Regards
Richard
Anonymous
Not applicable
Author

Hi Team,
Even i have similar requirement where i want to send continuous stream of dataset(id, json message string) from parent to child/sub job and i too am not proficient in java coding. So, need your help/guidance to implement talend job.
I want to either send (id,json message string) to subjob and read it in childjob and then extract table data per columns using tJSONExtract component?
OR
I want to extract json in parent job itself and send database columns (in the dataset) to child job?
Please help me here to achieve data flow from parent to child.
Thanks a lot for your time and help.
Rera
Anonymous
Not applicable
Author

Cant you refactor your "subjob" into a Joblet ?
A Joblet can have a flow input
Anonymous
Not applicable
Author

I would steer well clear of Joblets. They really should have been removed from the toolset. They are hard to debug when they go wrong, often mix object names with objects on your job (causing several issues), force renaming of other objects and really don't provide any true "objectification" of your code. 
I would use KZone's solution that doesn't require Java.
Anonymous
Not applicable
Author

Thank you DJ, but i am using open studio which does not have an option to create a joblet
Thanks Richard, even i would prefer kzone solution as m no expert in Java but only concern with his appraoch is it will process one row at a time. I want to process multiple rows (dataset). How do i achieve that?