使用nifi表达式语言指定null

时间:2017-10-02 03:27:21

标签: apache-nifi

我试图在UpdateRecord处理器中用空值替换空字段。

/title    ${field.value:replaceEmpty(null)}

这失败了因为" null"不是有效的关键字。如何在nifi表达式语言中指定null?

2 个答案:

答案 0 :(得分:0)

您可以使用i-1函数返回一个String值,该值是函数的确切输入,您可以将其嵌套在def runLengthEncoding(myList): aList = [] count = 1 for i in range(1, len(myList)): if myList[i] == myList[i - 1]: count = count + 1 else: aList.append((count, myList[i - 1])) count = 1 if i == len(myList) - 1: aList.append((count, myList[i])) return aList 方法中。尝试使用表达式literal()

如果您在replaceEmpty处理器中执行此操作,则需要使用Apache NiFi RecordPath语法,而不是Expression Language。我相信${field.value:replaceEmpty(${literal('null')})}和其他人甚至会解析一个只包含空格的字段值,因此像UpdateRecord这样的正则表达式不起作用。

我的建议是提交请求此功能的Jira。同时,请不要使用CSVReader,而是replaceRegex( /title, '^(?![\s\S])$', 'null' )使用正则表达式UpdateRecord作为空CSV值,并将其替换为ReplaceText

答案 1 :(得分:0)

使用 RecordPath 有一个技巧,如果字段值为空,您可以这样做以获得空值。

  • /fieldName[not(isBlank(/fieldName))]