NiFi ifelse表达式与boolean无法正常工作

时间:2017-07-05 21:35:57

标签: postgresql apache-nifi

我将JSON值放入Postgres数据库,链接InvokeHTTP,CovertJSONtoSQL,ReplaceText和PutSQL。 ReplaceText正在添加一个额外的' ON CONFLICT ......'我的SQL的子句。

作为ReplaceText的一部分,我使用了流文件的一个sql属性,据我所知,它被保存为一个布尔值(属性显示为' t'或者' f'在流文件中)。我需要将此布尔值(t或f)转换为字符串(" TRUE"或" FALSE"),以便它在我的查询中有效。我的策略是尝试{/ 1}},如

ifelse()

总是返回" FALSE"即使属性值为' t'。

我首先通过将其转换为字符串来使其工作:

${sql.args.3.value:ifElse("TRUE","FALSE")}

但我很沮丧,它似乎没有像预期的那样工作。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

这似乎是基于ifelse文档的预期行为:

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#ifelse

如果sql.args.3.value包含值“true”或“false”,那么它将被解释为布尔值,例如在文档中的示例中:

{{1}}

当bool的值为“true”时,评估为'a'。

在你的情况下,sql.args.3.value的值是't'或'f'所以它需要应用一个操作,导致“true”或“false”,例如你对等于('t')比较。