To add elements in an array object

My requirement is based on the input parameter(no of days) of a pipeline, I have to execute the the child pipeline which calls a API URL like below.

If the input paramater is 4, the child pipleline should execute as below.

To accomplish this, i am trying to build an array with dates dynamically based on the input paramater. If the input paramater is 4 the my array variable should be like [β€œ10-17-2018”, β€œ10-16-2018”, β€œ10-15-2018”, β€œ10-14-2018”] and then pass these dates as documents to the child pipeline calling the API.

Is this the correct approach and if so how do i build the array dynamically (ie some sort of looping is required i believe which i am not able to achieve in SnapLoigc). I would really appreciate if a solution is provided.


You can use the Sequence snap at the head of the pipeline to generate a series of documents with an index number that you can then transform with a Mapper to get a series of dates.

If you can’t make the Sequence snap the head of the pipeline, you can use the sl.range() function to generate an array and then use the method to transform the dates.

sl.range(_days).map(x =>{ format: "MM-dd-yyyy" }))

To break this down:

  • sl.range(_days) - The _days pipeline parameter contains the number of days to go back. The sl.range(...) call then produces an array that looks like [0, 1, 2, 3].
  • .map(x => ...) - Each element in the array will be transformed by the given callback function.
  •{ format: "MM-dd-yyyy" }) - This will get the current date-time, subtract one day and then turn the result into a string.

I’m attaching a pipeline that demonstrates both methods:

DateArray_2018_10_17.slp (6.9 KB)

1 Like

This is Brilliant having multiple solutions. Thanks so much for teaching to use the map method.

1 Like