Вот два способа, один из которых может быть более понятным, чем другой
| fillnull value="No data" Status | stats values(Status) as StatusList by Group_servers
даст вам что-то вроде следующего
Group_servers|StatusList
------------------------
Group1 |OK
------------------------
Group2 |No data
|Yellow
------------------------
Затем вы можете использовать mvfind
, чтобы определить, чтозначения присутствуют для каждой группы.
| fillnull value="No data" Status | stats values(Status) as StatusList by Group_servers | eval Status=if(isnotnull(mvfind(StatusList,"No data")),"NoData",( isnotnull(mvfind(StatusList,"Yellow")),"Yellow","OK"))
В качестве альтернативы, вы можете сделать что-то вроде следующего, который просто присваивает числовой счет каждому статусу, а затем получает минимум длякаждая группа.
eval status_code=case(Status="OK",2, Status="Yellow",1,1==1,0) | stats min(status_code) as min_status_code by Group_servers | eval Status=case(min_status_code=2,"OK",min_status_code=1,"Yellow",1==1,"No data")