我在每个流文件中都有timestamp值,我需要将当前流文件的时间戳与之前的流文件进行比较,如果更大,则使用Put文件处理器将其写入文件,最后我需要拥有文件中的最大时间戳。我通过以下方式尝试使用更新属性处理器的高级功能:
添加了一个名为max_timestamp
且条件为${getStateValue("maxTimestamp"):lt(${timestamp})}
的规则,并为属性maxTimestamp as ${timestamp}
我还将存储状态功能设置为在处理器中本地存储,但是我没有看到maxTimestamp
属性被设置为更新属性处理器的流文件输出。
答案 0 :(得分:1)
UpdateAttribute
处理器在状态模式下使用以下参数评估maxTimestamp
属性:Store State : Store state locally
Stateful Variables Initial Value : 0
maxTimestamp : ${timestamp:toNumber():math("max",${getStateValue("maxTimestamp")})}
表达式${timestamp:toNumber():math("max",${getStateValue("maxTimestamp")})}
评估两个数字之间的最大值:
当前flowFile中的 timestamp
属性,
和maxTimestamp
属性Stateful Variables Initial Value : 0
定义存储值maxTimestamp
RouteOnAttribute
以下属性:Routing Strategy : Route to Property name
less_then : ${timestamp:lt(${maxTimestamp})}
所以,你将有2个关系
less_then
表示timestamp
小于maxTimestamp
unmatched