Help us understand the problem. What is going on with this article?

Splunkで行列をつくる

つくりました。

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:ダミーデータばかりなり

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away