Ошибка: не удалось проанализировать регулярное выражение "": шаблон слишком большой - ошибка компиляции

Я нахожу следующие явления:

У меня есть запрос BQ с сотнями полей, извлеченных с использованием функции REGEXP_EXTRACT.

Я добавил новое выражение и получил следующую ошибку: Не удалось проанализировать регулярное выражение "": шаблон слишком большой - ошибка компиляции.

При запросе только этого выражения все работает нормально, в большем запросе я получаю сообщение об ошибке.

Это точная копия базы проблем на примере данных github и простого регулярного выражения:

    SELECT repository.description,
    REGEXP_EXTRACT(repository.description,r'(?:\w){0}(\w)') as Pos1,
    REGEXP_EXTRACT(repository.description,r'(?:\w){1}(\w)') as Pos2,
    REGEXP_EXTRACT(repository.description,r'(?:\w){2}(\w)') as Pos3,
.
. here it goes on and on in the same pattern
.
    REGEXP_EXTRACT(repository.description,r'(?:\w){198}(\w)') as Pos199,
    REGEXP_EXTRACT(repository.description,r'(?:\w){199}(\w)') as Pos200,
    REGEXP_EXTRACT(repository.description,r'(?:\w){200}(\w)') as Pos201,
    FROM [publicdata:samples.github_nested] LIMIT 1000

Возвращает:

Failed to parse regular expression "(?:\w){162}(\w)": pattern too large - compile failed

но при запуске:

SELECT repository.description,
REGEXP_EXTRACT(repository.description,r'(?:\w){162}(\w)') as Pos163,
FROM [publicdata:samples.github_nested] LIMIT 1000

Все работает нормально...

Существует ли ограничение на число REGEXP_EXTRACT или их совокупную сложность, которые можно использовать в одном запросе?

1 ответ

Я посмотрю в вопрос. В качестве обходного пути, похоже, что вы пытаетесь разделить поле на отдельные поля для каждой позиции символа... поэтому включите "abc" в {pos1: "a", pos2: "b", pos3: "с"}. Это верно? Если это так, вы можете попробовать использовать функции LEFT() и RIGHT(). Как в

LEFT(1, reponsitory.description) as pos1,
RIGHT(1, LEFT(2, reponsitory.description)) as pos2,
RIGHT(1, LEFT(3, reponsitory.description)) as pos3. 

Это должно использовать меньше ресурсов, чем компиляция 200 регулярных выражений (хотя это вряд ли будет быстрым).

Другие вопросы по тегам