Greg91
Greg91

Reputation: 75

Pentaho Job - Execute job based on condition

I have a pentaho job that is scheduled to run every week and gets data from one table and populates in another.

Now the job executes every week irrespective of whether the source table was updated or not.

I want to put a condition before the job runs to see if the source was updated last week or not and run the job only if the source was updated else dont run the job.

Upvotes: 0

Views: 3991

Answers (1)

Brian.D.Myers
Brian.D.Myers

Reputation: 2518

There are many ways you can do this. Assuming you have a table in your database that stores the last date your job was run, you could do something like this.

Create a Job and configure a parameter in it (I called mine RunJob). Create a transformation which gets your max run date, or row count then looks up the run date or row count from the previous run and compares them. It then sets the value of your job's variable based on the results of the comparison. Mine looks like this.

Get Last Run Date

Note that the last step in the transform is a Set Variables step from the Job branch.

Then in your job use a Simple Evaluation step to test the variable. Mine looks like this:

enter image description here

Note here that my transform sets the value of the variable only if the job needs to be run, otherwise it will be NULL.

Note also to be sure to update your last run date or row count after doing the table load. That's what the SQL step does at the end of the job.

You could probably handle this with fewer steps if you used some JavaScript in there, but I prefer not to script if I can avoid it.

Upvotes: 2

Related Questions