带有REGEX模式的数千条case语句的高效字段映射

时间:2018-11-09 16:10:23

标签: sql regex etl

我有一张大表(30B +行),其中基于2个字段中的值,我想通过正则表达式确定供应商的名称。有1,000多家供应商,每个供应商至少都有一个REGEX可以识别它。

当前,我使用了大量的SQL case语句,但要花很多时间和资源(如果有的话)。 (RedShift和Snowflake可以处理,Google BigQuery则不可以。)

问题:是否有另一种方法可以解决此问题,可能是在加载到数据库之前?

1 个答案:

答案 0 :(得分:0)

如果性能不是最重要的问题,则可以将“ regexp到供应商”映射放在表中,然后使用连接/笛卡尔积在数据库内执行转换。注意:任何数据库都可能会变慢。

如果要获得最佳性能,则可能需要投资并编写自定义程序来实现。有一些库可以帮助同时匹配很多正则表达式,例如lightgrephyperscan。 Lightrep甚至具有Python API,这可能会使它变得更容易。