Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested lists and aggreagted data #1228

Open
Pierrefreelance opened this issue Jan 4, 2024 · 1 comment
Open

Nested lists and aggreagted data #1228

Pierrefreelance opened this issue Jan 4, 2024 · 1 comment

Comments

@Pierrefreelance
Copy link

Hello everyone
I need to several transformations, in order to nest data in list, and aggregate them.
I'm more or less OK on the nest part, but I can't quite resolve how to aggregate them the way I want.

I have this in input :

[
{
"market_id": "4501",
"market_buyer_id": "Peter",
"modif_id": "AST-12 ",
"modif_length": "3",
"modif_owner": "Alice",
"modif_owner_title": "CEO"
},
{
"market_id": "4501",
"market_buyer_id": "Peter",
"modif_id": "AST-14 ",
"modif_length": "4",
"modif_owner": "Ken",
"modif_owner_title": "accountant"
},
{
"market_id": "5021",
"market_buyer_id": "Bob",
"modif_id": "AST-16 ",
"modif_length": "5",
"modif_owner": "Ryu",
"modif_owner_title": "counselor"
}
]

I want to create a list named "market" which list each "market_id" (and other fields), and inside the "market_id" list, I want a sub-list
named "modifications" which contains modif_id, modif_length, modif_owner and modif_owner_title.
Here is what i manage to get :

{
"market" : [ {
"id" : "4501",
"modifications" : [ {
"id" : "AST-12 ",
"length" : "3",
"owner" : [ {
"name" : "Alice",
"title" : "CEO"
} ]
} ]
}, {
"id" : "4501",
"modifications" : [ {
"id" : "AST-14 ",
"length" : "4",
"owner" : [ {
"name" : "Ken",
"title" : "accountant"
} ]
} ]
}, {
"id" : "5021",
"modifications" : [ {
"id" : "AST-16 ",
"length" : "5",
"owner" : [ {
"name" : "Ryu",
"title" : "counselor"
} ]
} ]
} ]
}

What i want is this, i'd like the modifications sub-list to actually list all the modification for a given market_id :

{
"market" : [ {
"id" : "4501",
"modifications" : [ {
"id" : "AST-12 ",
"length" : "3",
"owner" : [ {
"name" : "Alice",
"title" : "CEO"
}]
}
,{
"id" : "AST-14 ",
"length" : "4",
"owner" : [ {
"name" : "Ken",
"title" : "accountant"
}]
}

]

}, {
"id" : "5021",
"modifications" : [ {
"id" : "AST-16 ",
"length" : "5",
"owner" : [ {
"name" : "Ryu",
"title" : "counselor"
} ]
} ]
} ]
}

Here is my actual transformation :

[{
"operation": "shift",
"spec": {
"*": {
"market_id": "market[#2].id",
"modif_id": "market[#2].modifications[#3].id",
"modif_length": "market[#2].modifications[#3].length",
"modif_owner": "market[#2].modifications[#3].owner[#3].name",
"modif_owner_title": "market[#2].modifications[#3].owner[#3].title"

  }
}

}

]

@gbouget
Copy link

gbouget commented Feb 14, 2024

Hello,

What do you think of the following specification?

[
  {
    "operation": "shift",
    "spec": {
      "*": "@market_id.modifications[]" // regroup by market_id
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "market[]"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "market": {
        "*": {
          "modifications": {
            "*": {
              "market_id": "market[&3].id",
              "market_buyer_id": "market[&3].modifications[&1].id",
              "modif_length": "market[&3].modifications[&1].length",
              "modif_owner": "market[&3].modifications[&1].owner[#0].name",
              "modif_owner_title": "market[&3].modifications[&1].owner[#0].title"
            }
          }
        }
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "market": {
        "*": {
          "id": "ONE"
        }
      }
    }
  }
]

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants