微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NiFi-获取记录ID作为外键插入

如何解决NiFi-获取记录ID作为外键插入

我有一个数据源,其中的表用户nameagerole列。现在,我需要从中创建两个表,并将它们放入新的数据库中。表为userrole。因此,首先我将数据转储到user表中,对于role列,我需要插入role表中并将该ID放在{ {1}}表。对于每条记录,我都必须这样做。检查角色记录是否已经存在,如果是,则返回role或创建新记录并返回插入的user

样本源数据:

ID

预期的输出数据:

ID
  • 角色表:
Name,age,role

David,35,admin

Tay,23,user

John,27,user

请帮助我使用NiFi实现这一目标

解决方法

尝试LookupRecordSimpleDatabaseLookupService。该服务将配置为查找role列并返回id值(或Role表中调用的任何列)。对于LookupRecord,将Routing Strategy设置为Route to 'matched' or 'unmatched'

对于输入中的每个记录,如果在表中找到该角色,则这些记录将被路由到matched关系,并且输出FlowFile应该准备好供PutDatabaseRecord放入用户表。如果在表中找不到该角色,则这些记录将被路由到unmatched关系。

对于不匹配的记录,您可以复制流文件,通过Wait处理器发送一个文件,然后将其连接回LookupRecord处理器,另一个通过QueryRecord发送查询SELECT DISTINCT(role) AS role FROM FLOWFILE之类的东西。这应该为您提供一个FlowFile,您可以将其发送到PutDatabaseRecord以插入到Role表中(假设您具有自动递增的id列)。然后,您可以将其发送到Notify处理器以将原始FlowFile释放回LookupRecord。此时,查找应在“角色”表中找到该角色,并将所有记录路由到matched关系。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。