Apache nifi 更新处理器返回空字符串:在NIFI中将字符串日期转换为长字符串
将图像中提到的格式的字符串日期转换为数字(长),但得到的输出是空字符串 使用JSON读写器 其中,在输入JSON中为字符串,在输出JSON中为long类型 尝试将输出JSON类型保留为字符串,并尝试计算以下表达式,但该表达式也是空字符串 ${DATE1.value:toDate('yyyy-MM-dd HH:MM:ss'):toNumber():toString()} 尝试转换的示例数据:{“DATE1”:“2018-01-17 00:00:00”} 试图遵循此问题的解决方案,但仍然得到空字符串Apache nifi 更新处理器返回空字符串:在NIFI中将字符串日期转换为长字符串,apache-nifi,Apache Nifi,将图像中提到的格式的字符串日期转换为数字(长),但得到的输出是空字符串 使用JSON读写器 其中,在输入JSON中为字符串,在输出JSON中为long类型 尝试将输出JSON类型保留为字符串,并尝试计算以下表达式,但该表达式也是空字符串 ${DATE1.value:toDate('yyyy-MM-dd HH:MM:ss'):toNumber():toString()} 尝试转换的示例数据:{“DATE1”:“2018-01-17 00:00:00”} 试图遵循此问题的解决方案,但仍然得到空字符串
方法1:引用flowfile的内容:- 如果要根据内容中的字段值更改DATE1值,则需要将其称为field.value 重置价值策略 文字值 //日期1 ${field.value:toDate('yyyy-MM-dd HH:MM:ss'):toNumber()} 从内容中引用DATE1值,然后对其应用表达式语言。 Avro架构注册表:- {“名称空间”:“nifi”,“名称”:“余额”,“类型”:“记录”,
“字段”:[ {“名称”:“日期1”,“类型”:“字符串”}]} 从内容中读取DATE1字段值作为字符串 JsonRecordSetWriter:- {“名称空间”:“nifi”,“名称”:“余额”,“类型”:“记录”,
“字段”:[ {“name”:“DATE1”,“type”:“long”}]} 在SetWriter中,将DATE1配置为长类型 输入:- {“日期1”:“2018-01-17 00:00:00”} 输出:- [{“日期1”:1516165200000}] (或) 方法2:引用流文件的属性:- 如果您将DATE1作为值为2018-01-17 00:00:00的flowfile的属性,我们将使用DATE1属性而不是field.value(它指的是flowfile的内容) 那么UpdateRecord配置将是 重置价值策略 文字值 在这个表达式中,我们使用DATE1属性来更新flowfile的内容。
这两种方法将产生相同的输出。在转换为日期之前,使用isEmpty()和ifElse()检查值
您的EL表达式中有一个输入错误-
toSting()
应该是toString()
。已更正。谢谢你,安迪
//DATE1
${DATE1:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}
${field.value:isEmpty():ifElse('', ${field.value:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()})}