将图像上提到的格式的字符串日期转换为数字(长),但我得到的输出是空字符串。
使用JSON读写器;
其中在输入JSON中它是一个字符串,在输出JSON中它是long类型。
尝试将输出JSON类型保留为String并尝试计算以下表达式,但这也是空字符串
$ {DATE1.value:toDate('yyyy-MM-dd HH:mm:ss'):toNumber():toString()}
尝试转换的示例数据:{“DATE1”:“2018-01-17 00:00:00”}
尝试按照此link的解决方案,但仍然是空字符串。
答案 0 :(得分:4)
方法1:参考流文件的内容: -
如果您想根据内容中的字段值更改DATE1值,则需要引用 field.value
替代价值策略
字面值
<强> // DATE1 强> $ {field.value:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}
Avro Schema Registry: -
{“namespace”:“nifi”,“name”:“balances”,“type”:“record”,
“田地”:[ {“name”:“DATE1”,“type”:“string”}]}
从内容中读取DATE1字段值作为字符串。
<强> JsonRecordSetWriter: - 强>
{“namespace”:“nifi”,“name”:“balances”,“type”:“record”,
“田地”:[ {“name”:“DATE1”,“type”:“long”}]}
在SetWriter中,将DATE1配置为Long类型。
<强>输入: - 强>
{“DATE1”:“2018-01-17 00:00:00”}
<强>输出: - 强>
[{ “DATE1”:1516165200000}]
(或)
方法2:参考流文件的属性: -
如果你将DATE1作为流文件的属性,值为2018-01-17 00:00:00,我们将使用DATE1属性而不是field.value(它指的是flowfile的内容)
然后UpdateRecord Configs将
替代价值策略
字面值
//DATE1
${DATE1:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}
在这个Expression中我们使用DATE1属性来更新flowfile的内容。 两种方法都会产生相同的输出。
答案 1 :(得分:0)
在使用isEmpty()和ifElse()转换为Date之前检查值。
${field.value:isEmpty():ifElse('', ${field.value:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()})}