суббота, 13 сентября 2025 г.

Splunk. If или Case

 Приветствую, уважаемый читатель!

Сегодня расскажу про опыт применения в 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))))


... | eval result=if(max_count > 10,
                   if(json == "A", "yes",
                      if(json == "B", "no",
                         if(max_count < 20, "not", "not"))),"Не достигнуто")



Комментариев нет:

Отправить комментарий