Skip to content

Instantly share code, notes, and snippets.

@jaymecd
Created June 2, 2020 11:57
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jaymecd/d86d9fccebd6f6371f1bde6d36ff403e to your computer and use it in GitHub Desktop.
Save jaymecd/d86d9fccebd6f6371f1bde6d36ff403e to your computer and use it in GitHub Desktop.
This JQ one-liner to pivot JSON data

Pivot JSON data

This one-liner pivots data from group>users or user>groups:

$ cat incoming.json \
  | jq 'map(. as $in | .users[] | . as $u | {user:$u, group:$in.group}) | group_by(.user) | map({user:.[0].user, groups: map(.group)})'

[
  {
    "user": "user-1",
    "groups": [
      "grp-1",
      "grp-3"
    ]
  },
  {
    "user": "user-2",
    "groups": [
      "grp-3"
    ]
  },
  {
    "user": "user-3",
    "groups": [
      "grp-1",
      "grp-2"
    ]
  }
]
[
{
"group": "grp-1",
"users": [
"user-1",
"user-3"
]
},
{
"group": "grp-2",
"users": [
"user-3"
]
},
{
"group": "grp-3",
"users": [
"user-1",
"user-2"
]
}
]
@michaelguse
Copy link

Great sample script for pivoting JSON data!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment