如何在Jolt Specs中满足条件时删除整条记录?现有规则效果相反
Jolt规则修正:满足条件时将整条记录置为null
需求
当记录里的status字段等于De-Active时,把整条记录改成null。
输入JSON
{ "Location": "IND", "Environment": "", "Climate": "Summer", "category": "City", "status": "De-Active" }
条件与期望输出
- 触发条件:
status的值为De-Active - 期望输出:
null
当前用的Jolt规则(效果相反)
你现在的规则会在status是De-Active时保留原记录,不符合需求:
[ { "operation": "shift", "spec": { "status": { "De-Active": { "@2": "" } } } } ]
正确的Jolt规则
用下面的规则就能实现需求:
[ { "operation": "shift", "spec": { "status": { "De-Active": { "#null": "" }, "*": { "@2": "" } } } }, { "operation": "modify-overwrite-beta", "spec": { "*": "=isNull(@(1,&))" } } ]
简单解释
- 第一步
shift操作:- 如果
status是De-Active,就给根节点赋值字符串"null" - 如果是其他状态,就保留原完整记录
- 如果
- 第二步
modify-overwrite-beta操作:- 把字符串"null"转换成真正的
null值
- 把字符串"null"转换成真正的
这样就能精准实现你要的效果:符合条件时输出null,其他情况保留原数据。
内容的提问来源于stack exchange,提问作者self lab
相关产品推荐
相关产品推荐

