Reputation: 85
I'm trying to parse some json output from an API. I've got two arrays like this:
{
"data": [
{
"average": null,
"count": null,
"maximum": 100.0,
"minimum": null,
"timeStamp": "2020-09-01T00:30:00+00:00",
"total": null
},
{
"average": null,
"count": null,
"maximum": 100.0,
"minimum": null,
"timeStamp": "2020-09-02T00:30:00+00:00",
"total": null
},
{
"average": null,
"count": null,
"maximum": 97.0,
"minimum": null,
"timeStamp": "2020-09-03T00:30:00+00:00",
"total": null
}
],
"metadatavalues": []
},
{
"data": [
{
"average": null,
"count": null,
"maximum": 69.0,
"minimum": null,
"timeStamp": "2020-09-01T00:30:00+00:00",
"total": null
},
{
"average": null,
"count": null,
"maximum": 72.0,
"minimum": null,
"timeStamp": "2020-09-02T00:30:00+00:00",
"total": null
},
{
"average": null,
"count": null,
"maximum": 71.0,
"minimum": null,
"timeStamp": "2020-09-03T00:30:00+00:00",
"total": null
}
],
"metadatavalues": []
}
]
I'd like to take timestamp from the "data" in the first array, and join it with the maximum value from the first and the second array, like this:
"2020-09-01T00:30:00+00:00", 100, 69
"2020-09-02T00:30:00+00:00", 93, 72
"2020-09-03T00:30:00+00:00", 97, 71
What I've got now is jq -c [.[0].data[].timeStamp, .[0].data[].maximum, .[1].data[].maximum]
that returns everything in one array
Upvotes: 0
Views: 109
Reputation: 116870
Using transpose
makes for a compact solution:
[.[] | .data]
| transpose[]
| [.[0].timeStamp, (.[]|.maximum)]
| @csv
With the given input, the output, however, would be:
"2020-09-01T00:30:00+00:00",100,69
"2020-09-02T00:30:00+00:00",100,72
"2020-09-03T00:30:00+00:00",97,71
Upvotes: 1