更新处理器返回空字符串:将 NIFI 中的字符串日期转换为长整型

use*_*321 3 apache-nifi

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

使用 JSON 读取器和写入器;

其中,在输入 JSON 中它是一个字符串,在输出 JSON 中它是 long 类型。

尝试将输出 JSON 类型保留为 String 并尝试计算以下表达式,但这也是空字符串

${DATE1.value:toDate('yyyy-MM-dd HH:mm:ss'):toNumber():toString()}

尝试转换的示例数据:{"DATE1" : "2018-01-17 00:00:00"}

尝试遵循此链接上的解决方案,但仍然得到空字符串。

在此输入图像描述

Shu*_*Shu 5

方法1:引用flowfile的内容:-

如果您想根据内容中的字段值更改 DATE1 值,则需要引用field.value

重置价值策略

字面值

//DATE1 ${field.value:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}

从内容中引用 DATE1 值,然后对其应用表达式语言。 更新记录配置

Avro 架构注册表:-

{ "namespace": "nifi", "name": "balances", "type": "record",
"fields": [ { "name": "DATE1", "type": "string"} ] }

从内容中以字符串形式读取 DATE1 字段值。

JsonRecordSetWriter:-

{ "namespace": "nifi", "name": "balances", "type": "record",
"fields": [ { "name": "DATE1", "type":"long"} ] }

在 SetWriter 中将 DATE1 配置为 Long 类型。

输入:-

{“日期1”:“2018-01-17 00:00:00”}

输出:-

[{“日期1”:1516165200000}]

(或者)

方法2:引用流程文件的属性:-

如果您将 DATE1 作为值为 2018-01-17 00:00:00 的流文件的属性,我们将使用 DATE1 属性而不是 field.value(指的是流文件的内容)

那么 UpdateRecord Configs 将是

重置价值策略

字面值

//DATE1
${DATE1:toDate('yyyy-MM-dd HH:mm:ss'):toNumber()}
Run Code Online (Sandbox Code Playgroud)

在此表达式中,我们使用 DATE1 属性来更新流文件的内容。两种方法都会产生相同的输出。