JSON解析-使用JQ获取每个组的平均值

时间:2019-01-17 16:28:52

标签: json date grouping aggregate jq

我有以下JSON数据:

{
  "data": [  
    {"date": "2018-08-22","value": 3},
    {"date": "2018-08-30","value": 5},
    {"date": "2018-09-01","value": 5},
    {"date": "2018-09-22","value": 9},
    {"date": "2018-09-28","value": 4},
    {"date": "2018-10-18","value": 2},
    {"date": "2018-10-23","value": 1}
  ]
}

我想获得每月的平均值。 我的预期输出如下:

{
  "data": [  
    {"month": "2018-08","avg": 4},
    {"month": "2018-09","avg": 6},
    {"month": "2018-10","avg": 3}
  ]
}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这个问题几乎与

相同

JSON parsing - group by date range with JQ

那里给出的解决方案可以很容易地适应这里的问题:

def bucket: sub("-\\d+$"; "");

.data
| reduce .[] as $pair ({};
    .[$pair.date | bucket] += [$pair.value])
| {data: [to_entries[] | {month: .key, avg: (.value| add/length)}]}