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

total

total オペレータは、フィールド セットの合計をセットのすべての行に挿入します。集計値を生成する sum オペレータとは異なり、total オペレータは合計値を新しい列として挿入するため、個別の値を合計と比較するための式を定義できます。

構文

  • total <field>
    この構文では、指定フィールドの合計が格納された新しいフィールド (デフォルト名は「_total」) を作成します。
  • total <field> [as <field>] [by <field1>, <field2>, ...]
    この構文では、by 句で指定されたフィールド セットのグループに対して、指定フィールドの合計が格納された新しいフィールドを作成します。特定行の合計は、by 句フィールドの値が一致するすべての行の指定フィールドの合計となります。

ルール

  • total のエイリアスは省略可能です。エイリアスを指定しないと、デフォルトで _total が使用されます。
  • 指定フィールドに数値以外が格納されている行はスキップされます。
  • 合計できるメッセージ数の上限は 100,000 件です。 

合計の計算

この例では、時間範囲内に送信された合計データ (バイト数) を検索します。次のようなクエリを実行した場合:

* | parse "bytes:*," as data 
| total data as t_data

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

Total.png

t_data 値の 16,761,621,241.25455 は、すべての行の data フィールドの合計であり、それらの多くはここには示されていません。

このクエリは、3 件の結果のみを返し、_total が単に ps の合計であることを示しています。

* | parse "BytesTotalPersec = \"*\"" as ps 
| where ps > 3000 
| total ps

メッセージ時間ごとの合計の計算

行をメッセージ時間でグループ化して、それぞれの時間ごとに異なる合計を計算するには、_messagetime フィールドを使用します。

* | limit 10
| 1 as data
| total data by _messagetime

このクエリは、最初の 10 行を見て、それぞれに data というフィールドを作成します。単純にデータを合計するのではなく (その場合の結果は 10 になります)、このクエリは行をメッセージ時間ごとにグループ化して、各グループの合計を計算しています。

リクエストの実際の合計の計算

特定のユーザから出されたリクエストの実際の合計を知りたいとします。次のようなクエリを実行するとします。

_sourceCategory=IIS (Wyatt OR Luke)
| parse "* * * * * * * * " as date, time, csmethod, cs_uri_stem, cs_uri_query, s_port, c_ip, cs_username
| timeslice by 1m
| count as requests by _timeslice,cs_username
| sort by _timeslice asc, cs_username
| total requests as running_total by cs_username

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

RunningTotal.png

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