我有一个NiFi流程,可以将一些数据插入到某些表格中。在我向表中插入一些数据后,我发送一个信号,然后ExecuteSQL在该表上运行聚合查询。表名基于文件名。
问题是,当ExecuteSQL运行查询时,我只获得结果的子集。如果我在数据库控制台中运行相同的查询,则会返回不同的行数。
这可能是与事件驱动的调度策略有关的问题吗?
如果ExecuteSQL停止了,我在ExecuteSQL队列中得到了流文件(信号),然后我手动启动ExecuteSQL,我就会得到预期的结果。
答案 0 :(得分:2)
如果您正在运行多个插入(例如使用PutSQL)并且您希望仅在所有插入完成后运行它们,并且它们完成的顺序不确定,您可以尝试以下两种方法之一:< / p>
MergeContent - 在PutSQL之后使用MergeContent处理器,设置插入完成时触发的最小条目数和/或最大Bin时间。您可以将合并关系路由到ExecuteSQL。
MonitorActivity - 使用MonitorActivity处理器监控PutSQL的输出流,并在配置的时间段后触发非活动警报。您可以将非活动关系路由到ExecuteSQL以运行聚合查询。