我从mongodb集合中获取所有文档(数百万),并且我在postgreSQL中有很多正则表达式。 我想测试每个正则表达式,直到文档中包含多个字段的匹配为止。
你知道怎么做吗?
我尝试了Filter Row
步骤,但我无法想象如何从postgreSQL循环所有正则表达式。
答案 0 :(得分:2)
您可以使用加入行(笛卡尔积)组件来解决您的问题。您的一个输入必须在文档中读取,另一个必须在正则表达式中读取。连接组件将从这些组件创建外部产品,从而产生正则表达式和文档的每种可能组合。您必须将此流输入过滤器行组件并将结果发送到某个输出。
以下转换将模仿这种方法(它从CSV文件读取,但从postgreSQL或MungoDB读取它不会有任何区别):
"文件"的输入数据配置如下:
"正则表达式"的输入数据配置如下:
Join Rows 根本不需要配置,因为我们将 NOT 提供连接条件,从而使其成为一个完整的外连接。
在过滤器组件中,您必须使用DOC_TEXT
和REGEX_TEXT
字段来执行REGEXP
运算符的检查。
对于此文档输入
DOC_ID;DOC_TEXT
1;DFGBGGG
2;UHLLJAL
3;JJJJHHH
4;FGAKKBL
和这个正则表达式输入
REGEX_ID;REGEX_TEXT
1;.*A.*
2;.*B.*
转换将输出以下结果:
DOC_ID;DOC_TEXT;REGEX_ID;REGEX_TEXT
1;DFGBGGG;2;.*B.*
2;UHLLJAL;1;.*A.*
4;FGAKKBL;1;.*A.*
4;FGAKKBL;2;.*B.*