Archive

1レコード内の複数の連続したデータを取り出して結合する方法

Engager

ご教授ください。

1つのレコードのパラメータで連続したデータA[],B[],C[]があります。
これらのデータの中身の個数は同数であり、順番も連携しています。
それぞれを取り出して意味のあるデータData(A[1],B[1],C[1])という形でデータを成型した上で分析に使いたいのですが、
方法はありますでしょうか?

データのイメージ
1レコードの構成:A[0,1,2,3,4・・・],B[10,11,12,13,14,・・・],C[100,200,300,400,・・・]
やりたいこと
Data1[A[0],B[0],C[0]),Data2[A[1],B[1],C[1]),Data3[A[2],B[2],C[2]),・・・
という風に纏めたい。

Tags (1)
0 Karma
1 Solution

SplunkTrust
SplunkTrust
| stats count
| eval raw="A[0,1,2,3,4],B[10,11,12,13,14],C[100,200,300,400,500]"
| fields - count
| eval raw=replace(raw,",(?=\w+\[)","#")
| makemv delim="#" raw
`comment("this is sample data")`
| rex field=raw "(?<field_name>[^\[]+)\[(?<data>[^\]]+)\]"
| eval Data_A=mvindex(data,0),Data_B=mvindex(data,1),Data_C=mvindex(data,2)
| foreach Data_* 
    [eval <<FIELD>> = split(<<FIELD>>,",")]
| eval datas=mvzip(Data_A,mvzip(Data_B,Data_C,","),",")
| mvexpand datas
| fields datas
| streamstats count 
| fields datas count
| eval field_name="Data_".count
| eval result = field_name."[".datas.")"
| stats values(result) as result
| eval final_result=mvjoin(result,",")

なんとか形になりました。こちらでどうでしょうか?

View solution in original post

0 Karma

SplunkTrust
SplunkTrust
| stats count
| eval raw="A[0,1,2,3,4],B[10,11,12,13,14],C[100,200,300,400,500]"
| fields - count
| eval raw=replace(raw,",(?=\w+\[)","#")
| makemv delim="#" raw
`comment("this is sample data")`
| rex field=raw "(?<field_name>[^\[]+)\[(?<data>[^\]]+)\]"
| eval Data_A=mvindex(data,0),Data_B=mvindex(data,1),Data_C=mvindex(data,2)
| foreach Data_* 
    [eval <<FIELD>> = split(<<FIELD>>,",")]
| eval datas=mvzip(Data_A,mvzip(Data_B,Data_C,","),",")
| mvexpand datas
| fields datas
| streamstats count 
| fields datas count
| eval field_name="Data_".count
| eval result = field_name."[".datas.")"
| stats values(result) as result
| eval final_result=mvjoin(result,",")

なんとか形になりました。こちらでどうでしょうか?

View solution in original post

0 Karma

Engager

SPLありがとうございます。
ただ、私の説明が悪く、、、申し訳ありません。

やりたかったことを再度補足させて頂きます。
上記SPLの resultの形でデータ化をしたかった感じです。

記載いただいたresultは
Data_1[0,10,100]
Data_2[1,11,200]
Data_3[2,12,300]
Data_4[3,13,400]
Data_5[4,14,500]
となると思います。私の質問だと確かにその通りだなと思うのですが、、、やりたかったことは

このData_1を列として、各値を行として成型したかったというのが、本当にやりたかったことです。
Data_1:0,10,100
Data_2:1,11,200
Data_3:2,12,300
Data_4:3,13,400
Data_5:4,14,500

このData_xは時間単位でまとめようとしていました。
色々工夫頂いたのに、元の説明が悪く申し訳ありません。

何か方法御座いますでしょうか?

0 Karma

SplunkTrust
SplunkTrust
| stats count 
| eval raw="A[0,1,2,3,4],B[10,11,12,13,14],C[100,200,300,400,500]"
| fields - count
| eval raw=replace(raw,",(?=\w+\[)","#")
| makemv delim="#" raw
 `comment("this is sample data")`
| rex field=raw "(?<field_name>[^\[]+)\[(?<data>[^\]]+)\]"
| eval Data_A=mvindex(data,0),Data_B=mvindex(data,1),Data_C=mvindex(data,2)
| foreach Data_* 
     [eval <<FIELD>> = split(<<FIELD>>,",")]
| eval tmp=mvzip(Data_A,mvzip(Data_B,Data_C,","),",")
| mvexpand tmp
| fields tmp
| rex field=tmp "(?<Data_A>\d+),(?<Data_B>\d+),(?<Data_C>\d+)"
| fields - tmp

Data_A  Data_B  Data_C
0   10  100
1   11  200
2   12  300
3   13  400
4   14  500

こんな感じでしょうか

0 Karma

SplunkTrust
SplunkTrust
| stats count
 | eval raw="A[0,1,2,3,4],B[10,11,12,13,14],C[100,200,300,400,500]"
 | fields - count
 | eval raw=replace(raw,",(?=\w+\[)","#")
 | makemv delim="#" raw
 `comment("this is sample data")`
 | rex field=raw "(?<field_name>[^\[]+)\[(?<data>[^\]]+)\]"
 | eval Data_A=mvindex(data,0),Data_B=mvindex(data,1),Data_C=mvindex(data,2)
 | foreach Data_* 
     [eval <<FIELD>> = split(<<FIELD>>,",")]
 | eval datas=mvzip(Data_A,mvzip(Data_B,Data_C,","),",")
 | mvexpand datas
 | fields datas
 | streamstats count 
 | fields datas count
 | eval field_name="Data_".count
 | rex field=datas "(?<Data_A>\d+),(?<Data_B>\d+),(?<Data_C>\d+)"
 | fields field_name,Data_*

field_name  Data_A  Data_B  Data_C
Data_1  0   10  100
Data_2  1   11  200
Data_3  2   12  300
Data_4  3   13  400
Data_5  4   14  500

こちらでしょうか
0 Karma

Engager

申し訳ありません。自己解決しました。

記載頂いたSPLの応用で達成できました。ありがとうございます。
(mvindexで分解しました。)

0 Karma

SplunkTrust
SplunkTrust

了解です。
happy Splunking.

0 Karma
State of Splunk Careers

Access the Splunk Careers Report to see real data that shows how Splunk mastery increases your value and job satisfaction.

Find out what your skills are worth!