我的用例很简单,但到目前为止我还没有找到正确的解决方案。
我写的查询标记数据与当前时间戳在列的时间执行SQLRecords处理器命中并从数据库中获取数据现在想要的是,创建的流文件必须有相同的时间戳在他的名字,但我不知道如何捕获属性这是${now(): format("yyyyMMddHmmss")}
所以我可以使用更改重命名流文件
基本上,我想存储时间戳“在我命中数据库的时候”,我不能使用更新处理器来获取执行SQL处理器之前所需的时间戳(为什么=
注意-我在独立模式下运行NiFi,所以我不能在多个线程中运行执行SQL。
非常感谢任何帮助。事先感谢
ExecuteSQLRecords编写一个名为的属性,其中包含以毫秒为单位的查询获取持续时间。
因此,我们可以在ExecuteSQLRecords之后放置一个UpdateAtket处理器,该处理器使用${now(): toNumber():减去(${执行ql.query.持续时间})}
来获取当前时间作为Epoch Millis,然后减去总查询持续时间,以获取Query开始的时间。
然后,您可以使用: format('yyyyMMddHHmmss')
将其带回您想要的时间戳格式。
它可能比确切时间(到达UpdateAt和处理器所需的时间)少几毫秒。
查看文档ExecuteSQLRecords