diff
diff operator は、連続する行のフィールド値の差分を計算します。結果を出力するには、diff で数値データを含むフィールドを指定する必要があります。数値以外の値は検索結果から削除されます。
diff はデータをソートせずに入力ストリームの順番で行を処理し、フィールドの値を、1 つ前の行の同じフィールドの値から減算します。
結果の最初の行には diff の結果は表示されません。
diff operator を使用したクエリに group by 関数を追加することで、各グループの連続値の差を計算できます。(各グループのデータは別々に計算されます。)グループ化は、出力ストリームでの行の順序には影響しません。
構文
diff <field> [as <field>] [by <field1>, <field2>, ...]
ルール
- diff のエイリアスは省略可能です。エイリアスを指定しないと、_diff がデフォルトで使用されます。
- 指定されるフィールドには数値が含まれている必要があります。
- 数値以外の値が入っている行はスキップされ、その前の行 (最初に見つかった数値行) が使用されます。
- 最初の行に対応する diff の結果は常に null (空) になります。
- diff operator を含むクエリをダッシュボードに追加する場合は、diff operator の前に group by 関数を指定する必要があります。
例
diff を使用したタイムポイント間の分量の差分計算。
diff で値アムスライスを使用して、次のようなクエリを実行すると:
* | parse "bytes transmitted: '*'" as bytes
| timeslice 1m
| sum(bytes) as bytes by _timeslice
| sort _timeslice
| diff bytes as diff_bytes
次のような結果が返されます。
複数の diff operator の使用。1 つのクエリで複数の diff operator を使用できます。たとえば、バイトの差分と圧縮されたバイトの差分を計算するには、次のように指定します。
* | parse "data: '*'" as Bytes
| diff Bytes as b
| parse "compress: '*'" as Compressed
| diff Compressed as c
diff operator クエリのダッシュボードへの追加。diff operator を使用したクエリを追加するには、クエリの構文を次のように定義します。
* | parse "encoded: '*'" as e
| parse "compressed: '*'" as c
| count by e,c
| diff e as d
クエリがダッシュボードに対応していないと、ダッシュボードへの追加時にエラー メッセージが表示されます。