Apache Ni-Fi 表达式使用 ifElse 函数和使用 equals() 函数定义的条件 returns 真值的错误结果
Apache Ni-Fi expression using ifElse function and condition defined with equals() function returns wrong results for true values
我在 Apache Ni-Fi 流程中工作,该流程从 MySQL 数据库获取数据,经过一些数据转换后,它将数据写入 Timescale (postgreSQL) 数据库。
我使用 UpdateRecord 1.15.2 处理器进行数据转换。其中包括添加列/mvalue,其值根据以下表达式计算:
${metric:equals(18):ifElse(${valueSum}, 9)}
应该发生的是,当列metric的值为18时,mvalue应该取列valueSum的值。否则,该值应为 9。
但是,这不是我得到的,因为我得到的所有行的值都是 9。
metric 是重命名的列,在原始 MySQL 数据库中是 int(11),在目标数据库中是 smallint。
valueSum 在 MySQL 中是双精度,在 postgreSQL 中是数字。
新的计算列 mvalue 在 postgreSQL 中是数字。
我做错了什么?
谢谢,
贝尔纳多
使用 QueryRecord 处理器:
update
(动态属性):SELECT *, CASE WHEN metric=18 THEN ${valueSum} ELSE 0 END AS mvalue FROM FLOWFILE
我在 Apache Ni-Fi 流程中工作,该流程从 MySQL 数据库获取数据,经过一些数据转换后,它将数据写入 Timescale (postgreSQL) 数据库。
我使用 UpdateRecord 1.15.2 处理器进行数据转换。其中包括添加列/mvalue,其值根据以下表达式计算:
${metric:equals(18):ifElse(${valueSum}, 9)}
应该发生的是,当列metric的值为18时,mvalue应该取列valueSum的值。否则,该值应为 9。
但是,这不是我得到的,因为我得到的所有行的值都是 9。
metric 是重命名的列,在原始 MySQL 数据库中是 int(11),在目标数据库中是 smallint。
valueSum 在 MySQL 中是双精度,在 postgreSQL 中是数字。
新的计算列 mvalue 在 postgreSQL 中是数字。
我做错了什么?
谢谢,
贝尔纳多
使用 QueryRecord 处理器:
update
(动态属性):SELECT *, CASE WHEN metric=18 THEN ${valueSum} ELSE 0 END AS mvalue FROM FLOWFILE