循环属性值以在Nifi中执行SQL

时间:2018-11-01 17:55:44

标签: apache-nifi

我想知道如何在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

谢谢

1 个答案:

答案 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)})}