LoginSignup
2
1

More than 3 years have passed since last update.

Splunkで行列をつくる

Last updated at Posted at 2019-06-29

つくりました。

SPL
| makeresults count=20
| streamstats  count
| eval iterate="abcdefghijklmnopqrstuvwxyz"
| eval tmp="column"
| foreach tmp
    [eval <<FIELD>> = <<FIELD>> + "_" +substr(iterate,count,1)]
| xyseries count tmp _time  
| sort count
| foreach column*
    [eval <<FIELD>> = random() % 1000 + 1]

qiita.jpg

解説

  1. とりあえず20*20の行列を作ろうということで、makeresultscountで20を指定
  2. streamstatsで行番号を作成
  3. 最初は数字でやっていたが、最後のフィールドの整列が数字だと、column1,column10,column11,...と格好が悪くなったため、アルファベットの準備(最後fieldsできちんと書けばいいのだけどめんどくさくなりました。)
  4. 列名の準備。今回はcolumn
  5. foreachをtmpで回して、substrで列名に、アルファベットを順番にくっつける。mvindexだと0から始まるが、substrは1からなのね。
  6. xyseriesで縦横変換
  7. sortで整列
  8. foreachcolumn_*の列でまわして、各列に適当な数をいれる。
  9. 完成

順番に数をいれた列を作ってみる

SPL
| makeresults count=10
| streamstats  count
| eval iterate="abcdefghijklmnopqrstuvwxyz"
| eval tmp="column"
| foreach tmp
    [eval <<FIELD>> = <<FIELD>> + "_" +substr(iterate,count,1)]
| xyseries count tmp _time  
| sort count
| rename COMMENT as "行を減らしたいときはここで | head 必要な行数"
| eventstats max(count) as _linecount
| foreach column_* 
    [eval <<FIELD>>=mvfind(split("abcdefghijklmnopqrstuvwxyz",""),"<<MATCHSTR>>")  ]
| foreach column_*
    [eval <<FIELD>>=count + ( _linecount * '<<FIELD>>')]
    | rename count as No
    | rename column_* as *
No a b c d e f g h i j
1 1 11 21 31 41 51 61 71 81 91
2 2 12 22 32 42 52 62 72 82 92
3 3 13 23 33 43 53 63 73 83 93
4 4 14 24 34 44 54 64 74 84 94
5 5 15 25 35 45 55 65 75 85 95
6 6 16 26 36 46 56 66 76 86 96
7 7 17 27 37 47 57 67 77 87 97
8 8 18 28 38 48 58 68 78 88 98
9 9 19 29 39 49 59 69 79 89 99
10 10 20 30 40 50 60 70 80 90 100

縦に順番に入れてみた。
コメントに書いた通り、行を減らしたいときはhead、列を減らしたいときは最後にtableで残したい列名を書く。

foreachが一つに出来なかったのはなんでだろう:thinking:
mvfindの結果は数字(Number)のはずなんだけど、foreachの中だと微妙な扱い。tonumberも使えなかったし。

まとめ

今回は適当な列名ということで作ったが、

SPL
| eval field_name="A,B,C,D,E"
| makemv field_name delim=","
| mvexpand field_name

というようにきちんと書いて作るのもありだと思う。

:sweat:ダミーデータばかりなり

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1