Hello experts,
I am trying to create a custom macro, from that it will returns a result depends on the argument I pass to it, like this:
| makeresults | eval param=1 | eval result=case(param == 1, "one", param == 2, "two", param == 3, "three", true(), "Invalid number") | table result
The above searching query works well if I copy whole query and paste to the search bar
| makeresults | eval param=$param$ | eval result=case(param == 1, "one", param == 2, "two", param == 3, "three", true(), "invalid input") | table result
But when I used as a macro
`getNumber(param=1)`
I got an error
Error in 'makeresults' command: This command must be the first command of a search.
How can I solve this issue? Basically this macro will be used in another macro.
At the moment, we are not able to use a leading | inside macro definition. It's documented in Pipe characters and generating commands in macro definitions
Instead you can remove the pipe(|) from definition and use it while invoking it
|`getNumber(1)`
and definition would be
makeresults | eval param=$param$ | eval result=case(param == 1, "one", param == 2, "two", param == 3, "three", true(), "invalid input") | table result
At the moment, we are not able to use a leading | inside macro definition. It's documented in Pipe characters and generating commands in macro definitions
Instead you can remove the pipe(|) from definition and use it while invoking it
|`getNumber(1)`
and definition would be
makeresults | eval param=$param$ | eval result=case(param == 1, "one", param == 2, "two", param == 3, "three", true(), "invalid input") | table result
Thank you for your answer! the error has gone. But the macro always returns the value of true() case, even I pass 1 or 2 as argument. Do you have any idea @renjith_nair ?
Oh I was missing the quote mark. Now it works correctly. Thank you again @renjith_nair .