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

如何在NiFi中确保datasum字段仅传入整数值

实现方案建议

一、Python脚本处理方案

直接编写脚本遍历JSON数组,完成字段转换与新增:

  • 将原字段detail重命名为parametername
  • 检查datasum类型:若为字符串则替换为整数0,整数类型直接保留
  • 新增固定字段severity: "1"和createdby: "ApacheNifi"

示例代码

import json

# 输入JSON数据
input_data = '''
[
  {
    "hostname": "ip-192-168-1-1.demo-sample.com",
    "detail": "Host name",
    "datasum": "ip-192-168-1-1.demo-sample.com",
    "toolname": "nifi",
    "datacount": "1"
  },
  {
    "hostname": "demo-env",
    "detail": "System information",
    "datasum": "Windows DEMO-ENV 10.0.19 Microsoft Windows Server 2016",
    "toolname": "nifi",
    "datacount": "1"
  }
]
'''

# 解析并处理数据
raw_data = json.loads(input_data)
processed_list = []

for entry in raw_data:
    processed_entry = {
        "hostname": entry["hostname"],
        "parametername": entry["detail"],
        # 处理datasum字段
        "datasum": 0 if isinstance(entry["datasum"], str) else entry["datasum"],
        "toolname": entry["toolname"],
        "datacount": entry["datacount"],
        # 新增固定字段
        "severity": "1",
        "createdby": "ApacheNifi"
    }
    processed_list.append(processed_entry)

# 输出格式化后的JSON
print(json.dumps(processed_list, indent=2))

二、Apache NiFi流处理方案

如果数据在NiFi管道中流转,用以下处理器组合实现:

  1. EvaluateJsonPath:提取detail字段的值存入自定义属性parametername
  2. UpdateRecord:配置JSON格式的读写器,完成三项操作:
    • 重命名字段:将detail替换为parametername
    • 修正datasum:添加规则,当字段类型为字符串时设为0,整数则保留原值
    • 新增固定字段:添加severity值为"1",createdby值为"ApacheNifi"
  3. PutFile/PutDatabaseRecord:将处理后的JSON输出到目标存储或数据库

UpdateRecord核心配置

在Record Path Value中添加以下规则:

  • /parametername: ${detail}
  • /datasum: if(type(/datasum) == 'STRING', 0, /datasum)
  • /severity: "1"
  • /createdby: "ApacheNifi"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:50:37