表の行と列を入れ替えるSPL

Tips & Tricks 肥垣津 雄日

下記ログ形式で出力されるログに出会い、フィルターや統計処理の方法に悩みましたので、解決策について共有いたします。

time,2023/9/1-00:00,2023/9/1-00:01,2023/9/1-00:02,2023/9/1-00:03,…
send,0,1000,2000,3000,…
receive,0,100,200,300,…
flag,0,1,2,3,…

上記のログは、send、 receive、 flagといった各行に各データポイントの結果がoutputされており、データポイントごとにコンマ区切りで記録されます。

最終的に整形し出力したい表形式は下記です。

表形式

この形式にすることでsend、 recieve、 flagの値をフィルタリングしたり、統計処理することが可能です。

この記事では、次の2つの方法をご紹介します。

i) transposeコマンドを使用して、行と列を入れ替える
ii) rexコマンドを使用してフィールドを抽出し、各イベントごとに整形する

データの準備

いずれの方法もはじめにデータを準備します。

| makeresults
| eval _raw = "time;2023/9/1-00:00;2023/9/1-00:01;2023/9/1-00:02;2023/9/1-00:03;
send;0;1000;2000;3000;
receive;0;100;200;300;
flag;0;1;2;3; "

i) transposeコマンドを使用して、行と列を入れ替える

大まかな流れは次のとおりです。

手順は次のとおりです。

  1. multikvコマンドを用いて、_rawフィールドをテーブルに展開します
     multikvコマンドについては公式docをご確認ください。
     “forceheader=”で何行目をフィールド名として認識させるか指定できます。
    multikvコマンド
  2. fieldsコマンドを用い、不要なフィールドを省きます。transposeコマンドを用い、行と列を反転します
     transposeコマンドについては公式docをご確認ください。
    fieldsコマンド
  3. renameコマンドを用いて、列の名称を変更します
    renameコマンド

ii) rexコマンドを使用してフィールドを抽出し、各イベントごとに整形する

手順は次のとおりです。ポイントはmvexpandをするタイミングです。

整形手順

  1. rexコマンドを用いて、各フィールドを抽出します
    rexコマンド
  2. fieldsコマンドを用いて、不要なフィールドを省きます
    fieldsコマンド
  3. splitコマンドを用いて、シングルバリューをマルチバリューにします
     splitコマンドについては公式docをご確認ください。
    splitコマンド
  4. mvzipコマンドを用いて、各フィールドを結合したtemporaryフィールドを作成します
     mvzipコマンドについては公式docをご確認ください。
    mvzipコマンド
  5. Temporaryフィールド以外を省き、mvexpandコマンドを用いて、各行に展開します
     mvexpandコマンドについては公式docをご確認ください。
    fieldsコマンド
  6. rexコマンドを用いて、各フィールドを抽出します
     fieldsコマンドを用いて列を並び替えます
    rexコマンド/fieldsコマンド

    終わりに

    ii)のやり方は少し手間に思えますが、ログの形式によっては柔軟に活用できる方法ですので、このやり方もぜひ覚えてみてください。

関連記事

表の行と列を入れ替えるSPL
Tips
2 分程度

表の行と列を入れ替えるSPL

各イベントが行単位に記録されずデータの整形に苦労されたことはありますでしょうか?このブログでは、列ごとにレコードされているデータの行と列を入れ替えるSPLについて紹介します。
Splunkが提供する無料トレーニング:オブザーバビリティ編 (2) インフラ監視
Tips
4 分程度

Splunkが提供する無料トレーニング:オブザーバビリティ編 (2) インフラ監視

Splunkが提供している無料トレーニングコースを活用されていらっしゃいますか?本ブログでは、オブザーバビリティ製品を使ったインフラ監視の無料トレーニングコースを紹介します。本ページを見て興味を持っていただけたら、ぜひご自身のアカウントで受講してみてください。
トラブルシューティングのヒント:Splunkナレッジベース(Knowledge Base)のご紹介
Tips
2 分程度

トラブルシューティングのヒント:Splunkナレッジベース(Knowledge Base)のご紹介

Splunkユーザーの皆様が日々の運用で直面する疑問や課題を、よりスムーズに解消するためのリソース「Splunkナレッジベース(Knowledge Base)」をご紹介します。