Эффективное сопоставление полей с тысячами регистров с шаблонами REGEX - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть большая таблица (30B + строки), где на основе значений в 2 полях я хочу определить имя поставщика с помощью регулярного выражения. Существует более 1000 поставщиков, каждый из которых имеет хотя бы один REGEX для его идентификации.

В настоящее время я использую массивное SQL-выражение, но это занимает много времени и ресурсов, если вообще. (RedShift & Snowflake справляется, Google BigQuery - нет.)

Вопрос: Есть ли другой подход к этой проблеме, возможно, до загрузки в базу данных?

1 Ответ

0 голосов
/ 10 ноября 2018

Если производительность не имеет первостепенного значения, вы можете поместить отображение «regexp to vendor» в таблицу и выполнить преобразование в базе данных, используя продукт объединения / декартовой системы. Примечание: вероятно, это будет медленная работа с любой базой данных.

Если вы хотите максимальной производительности, вы можете инвестировать и написать специальную программу для этого. Существуют библиотеки, которые могут помочь сопоставить очень много регулярных выражений одновременно, например, lightgrep или гиперсканирование . Lightrep даже имеет API-интерфейс Python, который может упростить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...