我有如下数据 我需要对其进行改造。
[{"us":{"$event":"5bbf4a4f43d8950b5b0cc6d2"},"org":"TΙ UIH","rc":{"$event":"13"}},
{"us":{"$event":"5bbf4a4f43d8950b5b0cc6d3"},"org":"TΙ UIH","rc":{"$event":"13"}},
{"us":{"$event":"5bbf4a4f43d8950b5b0cc6d4"},"org":"AB KIO","rc":{"$event":"13"}},
{"us":{"$event":"5bbf4a4f43d8950b5b0cc6d5"},"org":"GH SVS","rc":{"$event":"17"}}]
我用的是什么
`[group_by(.org, .rc."$event")[] | [.[0].rc."$event", .[0].org, length]] |` sort_by(.[0])[]
我得到的输出:
[
"13",
"AB KIO",
1
]
[
"17",
"GH SVS",
1
]
[
"13",
"TΙ UIH",
2
]
如何获取以下格式的输出?
key1: ["",""]
key2: ["",""]
其中每个键都是事件的编号,在数组中,我们具有每个事件的组织的唯一值。
输出 13:[“ AB KIO”,“ TUIH”] 17:[“ GH SVS”]
答案 0 :(得分:0)
def aggregate_by(f; g):
reduce .[] as $x ({}; .[$x|f] += [$x|g]);
map( {rc: (.rc|.["$event"]), org} )
| aggregate_by(.rc; .org)
| map_values(unique)
修改示例输入使其成为JSON数组后,上述jq程序将产生:
{"13":["AB KIO","TΙ UIH"],"17":["GH SVS"]}
当然可以有很多变化,但是要推迟唯一化还需要说些什么。