Приветствую, уважаемый читатель!
Сегодня расскажу про опыт применения в Splunk операторов if и case, казалось бы, когда какой оператор применять ответ очевиден, но есть нюансы.
Вначале немного теории:
- Оператор if чаще всего используется для простых проверок типа "если условие, то значение 1, иначе значение 2".
- Оператор case предназначен для множественных условий. Он проверяет каждое условие последовательно сверху-вниз и возвращает значение для первого true. Это более удобно, когда есть много вариантов для одного поля, поскольку структура case более понятна читающему код.
- Оба оператора применяются чаще всего совместно с оператором eval.
... | eval result=if(json like "%text%", yes, no)
... | eval result=case(json like "%text%", test1, json like "%hex%", test2, true(), val_default)
Но бывает ситуация, когда необходимо составить цепочку условия и при переходе от условия к условию изменять значение результирующего поля. При наличии нескольких условий можно использовать вложенные if — когда внутри одного оператора if находятся еще операторы if.
Читать такой код станет максимально некомфортно, но задачу оценки большого количества условий решить получится (несколько примеров):
... | eval result=if(json like "%text%", yes, if(json2 like "%text%", no, if(json3 like "%text%", yes, if(json4 like "%text%", yes, no))))
Комментариев нет:
Отправить комментарий