実施環境: Splunk Free 8.2.2
やりたいこと
Splunk で stats 関数などを用いて集計する際、合計や平均などではなく「値そのまま」を出力したい場合があります。
そのような際に用いるのが、 list 関数と value 関数です。
実行例
list 関数と value 関数は使用方法がよく似ていますが、大きく異なる点が1つあります。
集計範囲に同じ値があった場合、 list 関数は「重複したまま出力する」のに対し、 value 関数は「重複を排除して出力する」という違いがあります。
以下の例を見るとそのことがよくわかるかと思います。
Splunk
| makeresults count=10
| streamstats count AS CNT
| eval NUM = CNT % 2
| stats sum(NUM) AS SUM,
list(NUM) AS LIST,
values(NUM) AS VALUES
なお、 list 関数や value 関数を用いて出力した値は「マルチバリュー」となります。
そのため、加工する際は mvexpand コマンドなどマルチバリューに用いるコマンドや関数を利用することが多いです。
Splunk
| makeresults count=10
| streamstats count AS CNT
| eval NUM = CNT % 2
| stats sum(NUM) AS SUM,
values(NUM) AS VALUES
| mvexpand VALUES