Я использую Anypoint Studio 6.1 и Mule 3.8.1 и в Dataweave У меня есть файл CSV в качестве входного и выходного списка JSON.Объединить записи в один объект JSON для каждой категории с использованием Dataweave
Несколько записей поступают в файл CSV с одинаковым идентификатором категории продукта, но будут иметь разные детали продукта, связанные с ним. Я хочу, чтобы мой результат был агрегирован для каждой из этих записей, поэтому у меня есть один объект для каждого идентификатора категории продуктов, который содержит список деталей продукта для каждого продукта под этим идентификатором категории продуктов. Как я могу это сделать?
Токовый выход:
[
{
"Products": {
"ProductDetails": [
{
"ProductDetail": {
"ProductSubDetails": {
"ProductAmount": 7.50,
"ProductReplenFrequency": "monthly",
"ProductsNotes": "Product Notes 1",
"pick": false
},
"ProductType": "PS4 Game"
},
"ProductSubType": "Game"
}
]
},
"ProductsCategoryId": "ProductS001",
"ProductSubType": "Computers and Games"
},
{
"Products": {
"ProductDetails": [
{
"ProductDetail": {
"ProductSubDetails": {
"ProductAmount": 7.50,
"ProductReplenFrequency": "fortnightly",
"ProductsNotes": "Products Notes 2",
"pick": false
},
"ProductType": "X Box One Game"
},
"ProductSubType": "Game"
}
]
},
"ProductsCategoryId": "ProductS001",
"ProductSubType": "Computers and Games"
}
]
Ожидаемый результат:
[
{
"Products": {
"ProductDetails": [
{
"ProductDetail": {
"ProductSubDetails": {
"ProductAmount": 7.50,
"ProductReplenFrequency": "monthly",
"ProductsNotes": "Product Notes 1",
"pick": false
},
"ProductType": "PS4 Game"
},
"ProductSubType": "Game"
},
{
"ProductDetail": {
"ProductSubDetails": {
"ProductAmount": 7.50,
"ProductReplenFrequency": "fortnightly",
"ProductsNotes": "Products Notes 2",
"pick": false
},
"ProductType": "X Box One Game"
},
"ProductSubType": "Game"
}
]
},
"ProductsIdentifier": "ProductS001",
"ProductSubType": "Computers and Games"
}
]
Dataweave код:
%dw 1.0
%input payload application/csv
%output application/json skipNullOn = "everywhere" , encoding = "UTF-8"
%var dataLookup = {(payload."ProductsCategoryId" map {($.Id): $.Value})}
---
(payload filter $$ > 2) map ((payload01 , indexOfPayload01) -> {
Products: {
ProductsDetails: [{
ProductsDetail: {
ProductsubDetails: {
ProductsAmount: payload01."Products Amount" as :number,
ProductsFrequency: payload01."Products Frequency"
},
ProductsType: payload01."Products Type"
}
}]
},
ProductsCategoryId: payload01."ProductsCategoryId"
})
Образец данных:
ProductsCategoryId,Product Type,Product Frequency,Product Amount
ProductS001,PS4 Game,Monthly,7.5
ProductS001,X Box One Game,Fortnightly,7.5
ProductS002,Lego,Daily,7
Благодаря
Не могли бы вы также предоставить некоторый образец ввода? –
Я добавил образцы данных csv с двумя записями с одинаковым идентификатором категории продуктов. Я смотрел команды группы и сглаживания, но не смог получить правильный результат. – user3165854