Apache nifi 更新处理器返回空字符串:在NIFI中将字符串日期转换为长字符串

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”} 试图遵循此问题的解决方案,但仍然得到空字符串

将图像中提到的格式的字符串日期转换为数字(长),但得到的输出是空字符串

使用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()})}