需要根据其他列中的值在列中填充自定义序列索引,以便在 Mulesoft 中使用 Data Weave 进行流动
Need to populate a custom sequence index in a column based on values in other column for flow with Data Weave in Mulesoft
我需要根据另一列中的值在一列中写一个 sequence/index。 请在下面找到示例来解释我的请求:
在这里,我需要根据颜色列中的值在自定义索引列中生成索引值。所以基本上,如果列中有 4 行红色,那么它应该将这些行索引为 1、2、3、4,然后当它的 2 行以蓝色作为值,它应该再次从 1 -> 1,2 索引。
输入数据:
[
{
"Type": "Header",
"Color": "Red",
"Customindex": "",
"code":"H1",
},
{
"Type": "Header",
"Color": "Blue",
"Customindex": "",
"code":"H2",
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code":"L1",
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code":"L1"
},
{
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code":"L2"
},
{
"Type": "Header",
"Color": "Yellow",
"Customindex": "",
"code":"H3"
},
{
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code":"L3"
},
{
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code":"L3"
},
{
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code":"L2"
}
]
这是我需要帮助的转换:
%dw 2.0
output application/json
var TM = flatten(payload map ((item, index) ->
[{
"Type":payload.type, //HEADER VALUES
"Color":"",
"Customindex":"",
"code":"",
}]++
[{
"Type":payload.type,// LINE ITEM VALUES
"Color":payload.color,
"Customindex":index,//need the index sequence to only count similar colors
"code":"",
}]))
---
(((TM distinctBy $ ... filters and groupings
包含详细信息的示例数据(这是预期的输出 - 应该仅适用于订单项):
这对你有用吗?
输入:
[
{
"Type": "Header",
"Color": "Red",
"Customindex": "",
"code": "H1"
}, {
"Type": "Header",
"Color": "Blue",
"Customindex": "",
"code": "H2"
},
{
"Type": "Header",
"Color": "Green",
"Customindex": "",
"code": "H4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code": "L1"
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code": "L1"
},
{
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code": "L2"
},
{
"Type": "Header",
"Color": "Yellow",
"Customindex": "",
"code": "H3"
},
{
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code": "L3"
}, {
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code": "L3"
}, {
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code": "L2"
}
]
脚本:
%dw 2.0
output application/csv
fun buildHeader(code) = {
'Type': 'Header',
"Color": "",
"CustomIndex":"",
"Code":code
}
fun buildFirstLineItem(code,color,ci) = {
'Type': 'LineItem',
"Color": color,
"CustomIndex":ci,
"Code":code replace ("H") with ("L")
}
---
flatten(payload orderBy $.code groupBy $.Color mapObject {
a: flatten($ map (
if($.'Type' == 'Header')
[buildHeader($.code)] + [buildFirstLineItem($.code,$.Color,(($$)+1))][0]
else
{
'Type': "LineItem",
"Color": $.Color,
"CustomIndex": (($$)+1),
"Code":$.code
}
))
}pluck($))
输出:
Type,Color,CustomIndex,Code
Type,Color,CustomIndex,Code
Header,,,H1
LineItem,Red,1,L1
LineItem,Red,2,L1
LineItem,Red,3,L1
Header,,,H2
LineItem,Blue,1,L2
LineItem,Blue,2,L2
LineItem,Blue,3,L2
Header,,,H3
LineItem,Yellow,1,L3
LineItem,Yellow,2,L3
LineItem,Yellow,3,L3
Header,,,H4
LineItem,Green,1,L4
LineItem,Green,2,L4
LineItem,Green,3,L4
LineItem,Green,4,L4
LineItem,Green,5,L4
我需要根据另一列中的值在一列中写一个 sequence/index。 请在下面找到示例来解释我的请求: 在这里,我需要根据颜色列中的值在自定义索引列中生成索引值。所以基本上,如果列中有 4 行红色,那么它应该将这些行索引为 1、2、3、4,然后当它的 2 行以蓝色作为值,它应该再次从 1 -> 1,2 索引。
输入数据:
[
{
"Type": "Header",
"Color": "Red",
"Customindex": "",
"code":"H1",
},
{
"Type": "Header",
"Color": "Blue",
"Customindex": "",
"code":"H2",
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code":"L1",
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code":"L1"
},
{
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code":"L2"
},
{
"Type": "Header",
"Color": "Yellow",
"Customindex": "",
"code":"H3"
},
{
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code":"L3"
},
{
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code":"L3"
},
{
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code":"L2"
}
]
这是我需要帮助的转换:
%dw 2.0
output application/json
var TM = flatten(payload map ((item, index) ->
[{
"Type":payload.type, //HEADER VALUES
"Color":"",
"Customindex":"",
"code":"",
}]++
[{
"Type":payload.type,// LINE ITEM VALUES
"Color":payload.color,
"Customindex":index,//need the index sequence to only count similar colors
"code":"",
}]))
---
(((TM distinctBy $ ... filters and groupings
包含详细信息的示例数据(这是预期的输出 - 应该仅适用于订单项):
这对你有用吗?
输入:
[
{
"Type": "Header",
"Color": "Red",
"Customindex": "",
"code": "H1"
}, {
"Type": "Header",
"Color": "Blue",
"Customindex": "",
"code": "H2"
},
{
"Type": "Header",
"Color": "Green",
"Customindex": "",
"code": "H4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Green",
"Customindex": "",
"code": "L4"
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code": "L1"
},
{
"Type": "LineItem",
"Color": "Red",
"Customindex": "",
"code": "L1"
},
{
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code": "L2"
},
{
"Type": "Header",
"Color": "Yellow",
"Customindex": "",
"code": "H3"
},
{
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code": "L3"
}, {
"Type": "LineItem",
"Color": "Yellow",
"Customindex": "",
"code": "L3"
}, {
"Type": "LineItem",
"Color": "Blue",
"Customindex": "",
"code": "L2"
}
]
脚本:
%dw 2.0
output application/csv
fun buildHeader(code) = {
'Type': 'Header',
"Color": "",
"CustomIndex":"",
"Code":code
}
fun buildFirstLineItem(code,color,ci) = {
'Type': 'LineItem',
"Color": color,
"CustomIndex":ci,
"Code":code replace ("H") with ("L")
}
---
flatten(payload orderBy $.code groupBy $.Color mapObject {
a: flatten($ map (
if($.'Type' == 'Header')
[buildHeader($.code)] + [buildFirstLineItem($.code,$.Color,(($$)+1))][0]
else
{
'Type': "LineItem",
"Color": $.Color,
"CustomIndex": (($$)+1),
"Code":$.code
}
))
}pluck($))
输出:
Type,Color,CustomIndex,Code
Type,Color,CustomIndex,Code
Header,,,H1
LineItem,Red,1,L1
LineItem,Red,2,L1
LineItem,Red,3,L1
Header,,,H2
LineItem,Blue,1,L2
LineItem,Blue,2,L2
LineItem,Blue,3,L2
Header,,,H3
LineItem,Yellow,1,L3
LineItem,Yellow,2,L3
LineItem,Yellow,3,L3
Header,,,H4
LineItem,Green,1,L4
LineItem,Green,2,L4
LineItem,Green,3,L4
LineItem,Green,4,L4
LineItem,Green,5,L4