如何在Jolt表达式中过滤articleActiveSeason与modelActiveSeason不等的记录?
问题:Jolt能否过滤articleActiveSeason与modelActiveSeason不等的记录?
现有JSON输入数据:
[ {"eventTime" : "2024-01-17T15:10:06.858","groupArticleNumber" : "FT6559","groupModelNumber" : "FRX88","productDescriptionEN" : "ESTRO 19 JSYY","subBrand" : "1","brand" : "11","businessSegment" : "104","modelActiveSeason" : "20251","salesLine" : "L84","productDescEN" : "ESTRO 19 JSYY","colorwayShortDescEN" : "TMLGBL/WHITE","keyCategory" : "00095","ageGroup" : "J","gender" : "M","genderAge" : "16","genderAgeMain" : "Kids","articleLifeCycle" : "50","sizePage" : "J4","articleCreationSeason" : "20201","articleActiveSeason" : "20242","rmhProductDivision" : "2","rmhProductType" : "30","rmhCategory" : "09","retailClass" : "12309","retailSubClass" : "1230930","retailDepartment" : "12","retailSubDepartment" : "123","materialComposition" : "100% PET-REC","mainMaterialFlag" : true,"sourcingSizeCode3" : "190"}, {"eventTime" : "2024-01-17T15:10:06.858","groupArticleNumber" : "FT6559","groupModelNumber" : "FRX88","productDescriptionEN" : "ESTRO 19 JSYY","subBrand" : "1","brand" : "11","businessSegment" : "104","modelActiveSeason" : "20251","salesLine" : "L84","productDescEN" : "ESTRO 19 JSYY","colorwayShortDescEN" : "TMLGBL/WHITE","keyCategory" : "00095","ageGroup" : "J","gender" : "M","genderAge" : "16","genderAgeMain" : "Kids","articleLifeCycle" : "50","sizePage" : "J4","articleCreationSeason" : "20201","articleActiveSeason" : "20242","rmhProductDivision" : "2","rmhProductType" : "30","rmhCategory" : "09","retailClass" : "12309","retailSubClass" : "1230930","retailDepartment" : "12","retailSubDepartment" : "123","materialComposition" : "100% PET-DAT","mainMaterialFlag" : false,"sourcingSizeCode3" : "190"}, {"eventTime" : "2024-01-17T15:10:06.858","groupArticleNumber" : "FT6559","groupModelNumber" : "FRX88","productDescriptionEN" : "ESTRO 19 JSYY","subBrand" : "1","brand" : "11","businessSegment" : "104","modelActiveSeason" : "20251","salesLine" : "L84","productDescEN" : "ESTRO 19 JSYY","colorwayShortDescEN" : "TMLGBL/WHITE","keyCategory" : "00095","ageGroup" : "J","gender" : "M","genderAge" : "16","genderAgeMain" : "Kids","articleLifeCycle" : "50","sizePage" : "J4","articleCreationSeason" : "20201","articleActiveSeason" : "20242","rmhProductDivision" : "2","rmhProductType" : "30","rmhCategory" : "09","retailClass" : "12309","retailSubClass" : "1230930","retailDepartment" : "12","retailSubDepartment" : "123","materialComposition" : "100% PET-REC","mainMaterialFlag" : true,"sourcingSizeCode3" : "180"}, {"eventTime" : "2024-01-17T15:10:06.858","groupArticleNumber" : "FT6559","groupModelNumber" : "FRX88","productDescriptionEN" : "ESTRO 19 JSYY","subBrand" : "1","brand" : "11","businessSegment" : "104","modelActiveSeason" : "20251","salesLine" : "L84","productDescEN" : "ESTRO 19 JSYY","colorwayShortDescEN" : "TMLGBL/WHITE","keyCategory" : "00095","ageGroup" : "J","gender" : "M","genderAge" : "16","genderAgeMain" : "Kids","articleLifeCycle" : "50","sizePage" : "J4","articleCreationSeason" : "20201","articleActiveSeason" : "20242","rmhProductDivision" : "2","rmhProductType" : "30","rmhCategory" : "09","retailClass" : "12309","retailSubClass" : "1230930","retailDepartment" : "12","retailSubDepartment" : "123","materialComposition" : "100% PET-DAT","mainMaterialFlag" : false,"sourcingSizeCode3" : "180"} ]
需求:过滤所有articleActiveSeason字段值不等于modelActiveSeason字段值的记录,能否直接用Jolt表达式实现?
回答
可以直接通过Jolt实现该过滤逻辑,无需额外处理。以下是对应的Jolt转换规范:
[ { "operation": "shift", "spec": { "*": { "${articleActiveSeason}:${modelActiveSeason}": { "@(2)": "[&1]" } } } } ]
逻辑说明
- 遍历输入数组中的每个元素(
"*") - 通过
${articleActiveSeason}:${modelActiveSeason}进行条件匹配:只有当两个字段值相等时,这个键才会匹配成功 - 匹配成功的元素,通过
@(2)引用当前完整元素,将其保留到输出数组的对应位置([&1]) - 不满足条件的元素会被自动丢弃,不会出现在输出结果中
针对提供的输入数据,所有记录的articleActiveSeason(值为20242)均不等于modelActiveSeason(值为20251),因此最终输出结果为空数组:[]
内容的提问来源于stack exchange,提问作者jitendra rawat
相关产品推荐
相关产品推荐

