使用 DWL 2.0 进行转换
Transform using DWL 2.0
输入 -
[
{
"SBQQ__Language__c": "th",
"SBQQ__APIName__c": "Description",
"SBQQ__Text__c": null,
"SBQQ__LongTextArea__c": "Packaging prepress - TH"
},
{
"SBQQ__Language__c": "th",
"SBQQ__APIName__c": "Name",
"SBQQ__Text__c": "ArtPro - TH",
"SBQQ__LongTextArea__c": null
},
{
"SBQQ__Language__c": "es",
"SBQQ__APIName__c": "Name",
"SBQQ__Text__c": "ArtPro - ES",
"SBQQ__LongTextArea__c": null
},
{
"SBQQ__Language__c": "es",
"SBQQ__APIName__c": "Description",
"SBQQ__Text__c": null,
"SBQQ__LongTextArea__c": "Packaging prepress - ES"
},
{
"SBQQ__Language__c": "de",
"SBQQ__APIName__c": "Name",
"SBQQ__Text__c": "ArtPro - DE",
"SBQQ__LongTextArea__c": null
},
{
"SBQQ__Language__c": "de",
"SBQQ__APIName__c": "Description",
"SBQQ__Text__c": null,
"SBQQ__LongTextArea__c": "Packaging prepress - DE"
}
]
所需输出:
[
{
"locale": "th",
"name": "ArtPro - TH",
"description": "Packaging prepress - TH"
},
{
"locale": "es",
"name": "ArtPro - ES",
"description": "Packaging prepress - ES"
},
{
"locale": "de",
"name": "ArtPro - DE",
"description": "Packaging prepress - DE"
}
]
注意:映射 -
'locale' : SBQQ__Language__c,
'name' : SBQQ__Text__c,
'description' : SBQQ__LongTextArea__c
我尝试使用 groupBy 然后尝试合并但没有成功。
试试这个:
%dw 2.0
output application/dw
---
payload groupBy $.SBQQ__Language__c
mapObject (
(v,k,i) -> {
(k): {
locale: k,
name: (v filter ($.SBQQ__APIName__c == "Name"))[0].SBQQ__Text__c,
description: (v filter ($.SBQQ__APIName__c == "Description"))[0].SBQQ__LongTextArea__c
}
}
)
pluck $
考虑到除了输入和输出之外没有提供太多解释,我不得不做出某些假设,这对于尝试推断您想要的内容非常有用。如果这不是您要找的内容,请在您的问题中提供更多详细信息,我会在最后进行修改。
希望对您有所帮助。
编辑:我相信这个解决方案会表现得更好:
%dw 2.0
output application/dw
---
payload groupBy $.SBQQ__Language__c
mapObject (
(v,k,i) -> {
(k): v reduce (e, acc={locale: k}) -> acc ++ do {
var field = lower(e.SBQQ__APIName__c)
---
(field): if (field == "name") e.SBQQ__Text__c else e.SBQQ__LongTextArea__c
}
}
)
pluck $
输入 -
[
{
"SBQQ__Language__c": "th",
"SBQQ__APIName__c": "Description",
"SBQQ__Text__c": null,
"SBQQ__LongTextArea__c": "Packaging prepress - TH"
},
{
"SBQQ__Language__c": "th",
"SBQQ__APIName__c": "Name",
"SBQQ__Text__c": "ArtPro - TH",
"SBQQ__LongTextArea__c": null
},
{
"SBQQ__Language__c": "es",
"SBQQ__APIName__c": "Name",
"SBQQ__Text__c": "ArtPro - ES",
"SBQQ__LongTextArea__c": null
},
{
"SBQQ__Language__c": "es",
"SBQQ__APIName__c": "Description",
"SBQQ__Text__c": null,
"SBQQ__LongTextArea__c": "Packaging prepress - ES"
},
{
"SBQQ__Language__c": "de",
"SBQQ__APIName__c": "Name",
"SBQQ__Text__c": "ArtPro - DE",
"SBQQ__LongTextArea__c": null
},
{
"SBQQ__Language__c": "de",
"SBQQ__APIName__c": "Description",
"SBQQ__Text__c": null,
"SBQQ__LongTextArea__c": "Packaging prepress - DE"
}
]
所需输出:
[
{
"locale": "th",
"name": "ArtPro - TH",
"description": "Packaging prepress - TH"
},
{
"locale": "es",
"name": "ArtPro - ES",
"description": "Packaging prepress - ES"
},
{
"locale": "de",
"name": "ArtPro - DE",
"description": "Packaging prepress - DE"
}
]
注意:映射 -
'locale' : SBQQ__Language__c,
'name' : SBQQ__Text__c,
'description' : SBQQ__LongTextArea__c
我尝试使用 groupBy 然后尝试合并但没有成功。
试试这个:
%dw 2.0
output application/dw
---
payload groupBy $.SBQQ__Language__c
mapObject (
(v,k,i) -> {
(k): {
locale: k,
name: (v filter ($.SBQQ__APIName__c == "Name"))[0].SBQQ__Text__c,
description: (v filter ($.SBQQ__APIName__c == "Description"))[0].SBQQ__LongTextArea__c
}
}
)
pluck $
考虑到除了输入和输出之外没有提供太多解释,我不得不做出某些假设,这对于尝试推断您想要的内容非常有用。如果这不是您要找的内容,请在您的问题中提供更多详细信息,我会在最后进行修改。
希望对您有所帮助。
编辑:我相信这个解决方案会表现得更好:
%dw 2.0
output application/dw
---
payload groupBy $.SBQQ__Language__c
mapObject (
(v,k,i) -> {
(k): v reduce (e, acc={locale: k}) -> acc ++ do {
var field = lower(e.SBQQ__APIName__c)
---
(field): if (field == "name") e.SBQQ__Text__c else e.SBQQ__LongTextArea__c
}
}
)
pluck $