備忘録。
IoT デバイスやセンサーから送られてくる json データを手元で簡単に集計したい。例えば、次のようなデータが送られてくる。これの score の合計を算出したい。
{ "data": [ { "datetime": "2025-12-02T09:00:10+09:00", "score": 1 }, { "datetime": "2025-12-02T09:00:45+09:00", "score": 0.5 }, { "datetime": "2025-11-26T08:01:05+09:00", "score": 2 }, { "datetime": "2025-11-26T08:01:05+09:00", "score": null }, { "datetime": "2025-11-26T08:02:05+09:00", "score": 1.5 } ... ] }
すべての score を合計する
jq '[.data[].score // 0] | add' data.json
// は jq のデフォルト演算子で、左の式が null または false の場合は右の式を評価する。[...] | add で配列にまとめて合計する。
日時の範囲を指定して score を合計する
datetime の範囲を指定するパターン。条件に合致する要素を select で抽出する。サンプルデータでは時系列でソートしてるけど、今回の場合は特にソートされている必要はない。
jq '[ .data[] | select(.datetime >= "2025-12-02T09:00:00+09:00" and .datetime <= "2025-12-02T09:00:59+09:00") | .score // 0 ] | add' data.json
現場からは以上です。