10-17-2018 10:47 AM
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.
https://xxxx/xxxx/testing?startdate=10-17-2018&enddate=10-17-2018
https://xxxx/xxxx/testing?startdate=10-17-2018&enddate=10-16-2018
https://xxxx/xxxx/testing?startdate=10-17-2018&enddate=10-15-2018
https://xxxx/xxxx/testing?startdate=10-17-2018&enddate=10-14-2018.
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.
Thanks
Solved! Go to Solution.
10-17-2018 11:38 AM
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 Array.map()
method to transform the dates.
sl.range(_days).map(x => Date.now().minusDays(x).toLocaleDateString({ 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.Date.now().minusDays(x).toLocaleDateString({ 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)
10-17-2018 11:38 AM
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 Array.map()
method to transform the dates.
sl.range(_days).map(x => Date.now().minusDays(x).toLocaleDateString({ 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.Date.now().minusDays(x).toLocaleDateString({ 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)
10-17-2018 12:02 PM
This is Brilliant having multiple solutions. Thanks so much for teaching to use the map method.