如何在Nifi ExecuteSQL处理器中使用参数?

时间:2019-04-23 17:59:30

标签: apache-nifi

我希望Nifi不能先进行联接,而是先读取数据库中的所有人员,然后再为每个人读取地址。我知道这不是最有效的方法,但是我们有一些具体原因。

“每个人”部分都可以通过使用SplitAvro或SplitJson处理器来解决,但是如何获取该当前人的ID并将其用作下一个ExecuteSQL处理器中的参数?

我已经检查过与我想要的东西类似的东西,但是问题有点老了(how to pass values dynamically in Apache NiFi from executeSQL to SelectHiveQL

但是,我想上面介绍的解决方案似乎更像是一种解决方法,对于应该很简单的事情。

(在我的情况下,我不使用Hive,两个ExecuteSQL处理器都在SQl Server DB上使用查询)

1 个答案:

答案 0 :(得分:2)

我承认这是一个复杂的情况,因为您正在执行读/迭代/查询而不是JOIN,但是如果您确实要这样做,我认为ExecuteSQLRecord是您正在寻找什么。该处理器将执行SQL查询,并使用配置的RecordWriter控制器服务将结果作为记录返回。然后,您可以使用LookupRecord执行其他查询,该查询可以连接到任意数据源(尽管当前不支持RDBMS)以丰富记录格式的数据,或者使用SplitRecord从单个记录创建流文件并路由到另一个ExecuteSQLRecord处理器,该处理器可以使用传入的flowfile属性作为SQL的查询参数。