メインコンテンツまでスキップ
Sumo Logic Japanese

merge operator

merge operator は指定したマージ方法を使用して、イベントのストリームを 1 つのイベントに削減します。これは特に Transactionize operator の subquery として使用すると便利です。各フィールドでは異なるマージ戦略を指定できます。

  • takeFirst - 最も早い値でフィールドを要約します。
  • takeLast - 最も遅い値でフィールドを要約します。
  • セパレータでの結合 - 指定したセパレータで区切られたすべての値を 1 つの文字列に結合します。セパレータを指定しないと、改行が使用されます。

構文

  • merge
    _raw 値をマージして、値と値を改行で区切ります。time フィールドを追加して、最も早いタイムスタンプを格納します。
  • merge <field> 
    指定フィールドの値をマージして、値と値を改行で区切ります。
  • merge <field> [<strategy>] [as <field>]
    指定された戦略で指定フィールドの値をマージして、フィールドの新しい名前を指定します。
  • merge <field> [<strategy>] [as <field1>] [,<field> [<strategy>] [as <field2>] ]... 
    コンマ区切りリストのフィールドをそれぞれ指定された戦略でマージします。戦略を指定しないと、結合と改行が使用されます。

制限事項

  • メタデータ フィールド _messageTime では、takeFirst と takeLast 以外の戦略は使用できません。

次のクエリでは:

*  | parse "BytesSentPersec = \"*\"" as BytesPersec 
| merge BytesPersec join with "--", _messageTime takeLast

次のような結果が返されます。

merge operator を transactionize operator と一緒に使用する一般的な使用事例は、すべてのログ メッセージに共通フィールド (transaction_idrequest_id など) があるケースです。merge operator を transactionize operator と併用することで、次のように、共通フィールドですべてのメッセージをマージできます。

_sourceCategory=travelweb
| parse regex "(?<ip>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]) - "
| transactionize ip (merge ip takeFirst, _raw join with "\n\n\n") 

次のような結果が返されます。同じ IP からのログがすべて 1 つのレコードにグループ化されています。

 

  • この記事は役に立ちましたか?