You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache NiFi的Jolt规范中实现指定if else条件逻辑?

Jolt条件逻辑实现方案

需求规则

  • 当credits_type等于MARGIN或为null时,pretax字段取值为cost
  • 其他场景下,pretax取值为cost与credits_amount的和

最终Jolt规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "cost": "[&1].cost",
        "credits_amount": "[&1].credits_amount",
        "credits_type": "[&1].credits_type",
        "@cost": "[&1].pretax",
        "@": "[&1].temp"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "pretax": "=ifElse(not(or(eq(@(1,credits_type),'MARGIN'), eq(@(1,credits_type),null))), sum(@(1,cost),@(1,credits_amount)), @(1,pretax))",
        "temp": ""
      }
    }
  }
]

规范说明

  1. Shift阶段:

    • 保留所有原始字段(cost、credits_amount、credits_type)
    • 先给pretax默认赋值为cost,覆盖第一种规则场景
    • 将当前完整对象存入temp字段,为后续条件判断保留数据
  2. Modify阶段:

    • 使用ifElse函数做条件分支判断:
      • 触发条件:credits_type既不是MARGIN也不为null
      • 满足条件时:用sum函数计算cost与credits_amount的和,替换pretax值
      • 不满足条件时:保持pretax的初始值(即cost)
    • 删除临时字段temp,清理输出结构

测试验证

场景1:credits_type为MARGIN

输入:

[
  {
    "cost": "10",
    "credits_amount": "5",
    "credits_type": "MARGIN"
  }
]

输出:

[
  {
    "cost": "10",
    "credits_amount": "5",
    "credits_type": "MARGIN",
    "pretax": "10"
  }
]

场景2:credits_type为其他值

输入:

[
  {
    "cost": "10",
    "credits_amount": "5",
    "credits_type": "OTHER"
  }
]

输出:

[
  {
    "cost": "10",
    "credits_amount": "5",
    "credits_type": "OTHER",
    "pretax": 15
  }
]

场景3:credits_type为null

输入:

[
  {
    "cost": "10",
    "credits_amount": "5",
    "credits_type": null
  }
]

输出:

[
  {
    "cost": "10",
    "credits_amount": "5",
    "credits_type": null,
    "pretax": "10"
  }
]

补充说明

如果需要pretax保持字符串类型(和输入的cost、credits_amount一致),可以将Modify阶段的sum部分改为:

"pretax": "=ifElse(not(or(eq(@(1,credits_type),'MARGIN'), eq(@(1,credits_type),null))), toString(sum(@(1,cost),@(1,credits_amount))), @(1,pretax))"

内容的提问来源于stack exchange,提问作者pandu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:23:08