提问者:小点点

NiFi-持续执行SQLRecords处理器查询中使用的时间戳值


我的用例很简单,但到目前为止我还没有找到正确的解决方案。

我写的查询标记数据与当前时间戳在列的时间执行SQLRecords处理器命中并从数据库中获取数据现在想要的是,创建的流文件必须有相同的时间戳在他的名字,但我不知道如何捕获属性这是${now(): format("yyyyMMddHmmss")}所以我可以使用更改重命名流文件

基本上,我想存储时间戳“在我命中数据库的时候”,我不能使用更新处理器来获取执行SQL处理器之前所需的时间戳(为什么=

注意-我在独立模式下运行NiFi,所以我不能在多个线程中运行执行SQL。

非常感谢任何帮助。事先感谢


共1个答案

匿名用户

ExecuteSQLRecords编写一个名为的属性,其中包含以毫秒为单位的查询获取持续时间。

因此,我们可以在ExecuteSQLRecords之后放置一个UpdateAtket处理器,该处理器使用${now(): toNumber():减去(${执行ql.query.持续时间})}来获取当前时间作为Epoch Millis,然后减去总查询持续时间,以获取Query开始的时间。

然后,您可以使用: format('yyyyMMddHHmmss')将其带回您想要的时间戳格式。

它可能比确切时间(到达UpdateAt和处理器所需的时间)少几毫秒。

查看文档ExecuteSQLRecords