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つのグループとして計算します。グループフィールドを基準にソートされる副次的な効果もあります。
使用例
-
全レコード数の集計
stats count -
src_ipフィールドごとのレコード数を集計
stats count by src_ip -
src_ip、dst_ipフィールドの組み合わせでグループ化し、レコード数を集計
stats count by src_ip, dst_ip -
src_ip、dst_ipフィールドの組み合わせでグループ化し、sum(bytes)およびレコード数(count)を集計
stats sum(bytes) as bytes, count by src_ip, dst_ip
説明
statsコマンドは、入力レコードをby句に指定したフィールドを基準にグループ化し、各グループに対して集計関数を適用した結果を出力します。by句を省略すると全入力を1つのグループとして処理します。出力はグループフィールド値を基準にソートされます。
分散環境では、制御ノードで最終集計を実行します。
集計中にメモリ内バッファがデフォルト100,000件を超えると中間結果をディスクにフラッシュし、クエリ終了時に並列マージソートで最終結果を生成します。by句のグループ数が多いか入力レコード数が多いほど、メモリ使用量とディスクI/Oが増加します。