我将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")}
但我很沮丧,它似乎没有像预期的那样工作。有什么想法吗?
谢谢!
答案 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')比较。