In the following query, I want to use the value of b as a field:
| makeresults
| eval a=1
| eval b="a"
| eval c=some_operation_based_on(b)
I want c to be equal to the value of a i.e. 1 in this example. I have tried using foreach and {field_name} but I wasn't able to achieve the result I want.
@doton
Can you please try this?
| makeresults
| eval a=1
| eval b="a"
| eval c=""
| foreach *
[ eval c=if("<<FIELD>>"==b,<<FIELD>>,c)]
You can do any operations as per you requirement,
@kamlesh_vaghela, Thanks it works, but I don't understand how it works. If I understand correctly, <<FIELD>> will be replaced by filed names as foreach loops through them. Thus when the field is b the the eval expression should be equal to eval c=if("b"==b,b,c) and b is equal to "a" so c should be equal to "a". In the next iteration of the loop it will became eval c=if("c"==b,c,c) so it shouldn't change the value of c.
Can you please elaborate?
@doton
In foreach, it will only assign a value in field c if the field name match with the value of c (which is contain the name of field) else it will assign it self's value ( means c will assign value of c only). This will not override the matched values. So it is basic if else concept.
🙂
Thanks, I was missing this point
if the field name match with the value
@doton
Great..
Please upvote and accept the answer to close this question.
@doton
can u try like this $result.b$