stats

グループを対象として動作する集計関数の評価結果を出力します。

構文

stats [parallel=BOOL] AGGR_FUNC [as ALIAS], ... [by GRP_FIELD, ...]
必須パラメータ
AGGR_FUNC [as ALIAS], ...
実行する集計関数(AGGR_FUNC)を用いて式を入力します。as句を利用して、集計関数の値を格納するフィールド名(ALIAS)を指定できます。名前を指定しない場合、count()sum(sent_pkts) など関数名がフィールド名として使用されるため、フィールド名(ALIAS)を指定することを推奨します。
オプションパラメータ
parallel=BOOL
クエリ結果の並列出力の有無(デフォルト: f)。処理速度は向上しますが、データの順序は保証されません。データの順序が重要なクエリでは、このオプションを使用しないでください。
  • t: クエリ結果を並列で出力
  • f: クエリ結果を並列で出力しない
by GRP_FIELD, ...
by句を利用して、集計関数の結果をグループ化するフィールドを指定します。グループ化フィールドを指定しない場合、前のクエリコマンドから渡された全ログを1つのグループとして計算します。グループフィールドを基準にソートされる副次的な効果もあります。

使用例

  1. 全レコード数の集計

    stats count
    
  2. src_ipフィールドごとのレコード数を集計

    stats count by src_ip
    
  3. src_ipdst_ipフィールドの組み合わせでグループ化し、レコード数を集計

    stats count by src_ip, dst_ip
    
  4. src_ipdst_ipフィールドの組み合わせでグループ化し、sum(bytes)およびレコード数(count)を集計

    stats sum(bytes) as bytes, count by src_ip, dst_ip
    

説明

statsコマンドは、入力レコードをby句に指定したフィールドを基準にグループ化し、各グループに対して集計関数を適用した結果を出力します。by句を省略すると全入力を1つのグループとして処理します。出力はグループフィールド値を基準にソートされます。

分散環境では、制御ノードで最終集計を実行します。

集計中にメモリ内バッファがデフォルト100,000件を超えると中間結果をディスクにフラッシュし、クエリ終了時に並列マージソートで最終結果を生成します。by句のグループ数が多いか入力レコード数が多いほど、メモリ使用量とディスクI/Oが増加します。