Разбор JSON - получить среднее значение по группе с JQ - PullRequest
0 голосов
/ 17 января 2019

У меня есть следующие данные 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 голосов
/ 18 января 2019

Этот вопрос почти идентичен

Разбор JSON - диапазон группы по дате с JQ

и приведенное там решение можно легко адаптировать к проблеме здесь:

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

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