使用 1000 条带有 REGEX 模式的案例语句进行高效字段映射

Efficient field mapping with 1000s of case statements with REGEX patterns

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

目前,我使用了大量的 SQL 案例陈述,但它需要大量的时间和资源,如果有的话。 (RedShift 和 Snowflake 处理它,Google BigQuery 不处理。)

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

如果性能不是最重要的,您可以将 "regexp to vendor" 映射放在 table 中,然后使用连接/笛卡尔积在数据库内执行转换。注意:对于任何数据库,它都可能会很慢。

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