我想知道如何在Nifi Flow中完成以下用例:
我想通过循环执行SQL查询日期范围。日期范围是从属性值列表中提供的。
例如:如果我的属性列表是:2013-01-01 2013-02-01 2013-03-01
,我想通过循环执行SQL操作,例如:
select * from where startdate>=2013-01-01 and enddate<2013-02-01
其次:
select * from where startdate>=2013-02-01 and enddate<2013-03-01
因此,对于同一点,我大致了解这个想法,但无法具体实现:
UpdateAttribute
(包含日期值列表)-> SplitText
-> RouteOnAttribute
-> ExecuteSQL
谢谢
答案 0 :(得分:0)
在NiFi 1.8.0中,您可以为此使用DuplicateFlowFile(通过NIFI-5454)。您可以从UpdateAttribute开始,在列表中添加所描绘的值的计数(假设它是一个名为datelist
的属性),也许可以将list.count
设置为
${allDelineatedValues(${datelist}, " "):count()}
然后在DuplicateFlowFile中将副本数设置为${list.count:minus(1)}
。每个下游文件流都将设置copy.index
属性(原始文件的索引为0),因此您可以在ReplaceText中将其与getDelimitedValue()
结合使用,也许将内容设置为以下内容:
select * from myTable where
startdate >= ${datelist:getDelimitedField(${copy.index:plus(1)})} and
enddate < ${datelist:getDelimitedField(${copy.index:plus(2)})}