Apache nifi 我可以对json文件进行数学运算吗?

Apache nifi 我可以对json文件进行数学运算吗?,apache-nifi,Apache Nifi,我有一个JSON文件作为处理器的输入。大概是这样的: {"x" : 10, "y" : 5} 我可以对这些值进行数学运算而不是编写自定义处理器吗?我需要做一些类似的事情 ( x / y ) * 3 ^只是一个例子 我需要将结果保存到输出文件中 更新: 这是我在generateFlowFile processor中的文本: X|Y 1|123 2|111 这是我的AVRO模式: { "name": "myschema", "namespace": "nifi", "type": "re

我有一个JSON文件作为处理器的输入。大概是这样的:

{"x" : 10, "y" : 5}
我可以对这些值进行数学运算而不是编写自定义处理器吗?我需要做一些类似的事情

( x / y ) * 3
^只是一个例子

我需要将结果保存到输出文件中

更新: 这是我在generateFlowFile processor中的文本:

X|Y
1|123
2|111
这是我的AVRO模式:

{
 "name": "myschema",
 "namespace": "nifi",
 "type": "record",
 "fields": [
 {"name": "X" , "type": "int"},
 {"name": "Y" , "type": "int"} ]
}
当我将上述类型更改为字符串时,它工作正常,但我无法对字符串执行数学运算

仅供参考,我已在架构访问策略中选择了“使用架构名称属性”

  • 配置/启用记录读写器控制器服务
  • 将Avro模式定义为
    读取
    传入的Json
  • 定义Avro模式,以
    以所需格式写入
    查询结果
将查询记录处理器中的新属性添加为

sql

select  ( x / y ) * 3 as div from FLOWFILE
来自查询记录处理器的输出流文件将采用配置的记录编写器格式。

使用处理器

  • 配置/启用记录读写器控制器服务
  • 将Avro模式定义为
    读取
    传入的Json
  • 定义Avro模式,以
    以所需格式写入
    查询结果
将查询记录处理器中的新属性添加为

sql

select  ( x / y ) * 3 as div from FLOWFILE

来自查询记录处理器的输出流文件将采用配置的记录编写器格式。

谢谢您的回答!我尝试了同样的方法,但是当模式中的字段类型为“int”时,我得到了一个错误。错误是:由于输入字符串“x”,无法读取“x”输入中的下一条记录。这只发生在int或long类型。但是,如果我改为字符串,并从FLOWFILE中使用sql作为
selct*,它工作得很好。@NoName,我认为问题来自
Avro模式
,请使用您现在使用的
示例数据
读写器Avro模式
更新您的问题。所以我会尽力帮助你解决这个问题@NoName,我尝试了您的
示例记录
,并在此处上载了模板:将此模板上载到您的实例,并根据您的案例更改avro模式。感谢您的回答!我尝试了同样的方法,但是当模式中的字段类型为“int”时,我得到了一个错误。错误是:由于输入字符串“x”,无法读取“x”输入中的下一条记录。这只发生在int或long类型。但是,如果我改为字符串,并从FLOWFILE中使用sql作为
selct*,它工作得很好。@NoName,我认为问题来自
Avro模式
,请使用您现在使用的
示例数据
读写器Avro模式
更新您的问题。所以我会尽力帮助你解决这个问题@NoName,我尝试了您的
示例记录
,并在此处上载了模板:将此模板上载到您的实例,并根据您的案例更改avro模式。