Перейти к основному содержимому

Разбор SQL

dbt использует библиотеку Python sqlparse для разбора SQL. Для больших или сложных запросов может потребоваться настроить группировку токенов в sqlparse, чтобы избежать проблем с производительностью или достижения ограничений при разборе.

Вы можете использовать флаг --sqlparse, чтобы настроить группировку токенов в sqlparse. Этот флаг позволяет задать ограничения группировки, описанные в разделе «Безопасность и производительность» документации sqlparse.

Поддерживаемые ключи:

КлючНазначение
MAX_GROUPING_DEPTHЗадаёт максимальную глубину вложенности при группировке токенов
MAX_GROUPING_TOKENSЗадаёт максимальное количество токенов, которые можно сгруппировать за один раз

Каждый ключ принимает одно значение: целое число или null. Значение по умолчанию для обоих ключей — null, что означает, что dbt не задаёт пользовательское ограничение.

sqlparse применяет встроенные ограничения (MAX_GROUPING_DEPTH = 100 и MAX_GROUPING_TOKENS = 10000), чтобы предотвратить чрезмерное использование ресурсов. Установка значения null полностью отключает соответствующее ограничение.

Например, следующая команда задаёт оба ограничения группировки:

dbt compile --sqlparse '{"MAX_GROUPING_DEPTH": 200, "MAX_GROUPING_TOKENS": 20000}'

Вы можете настроить только один ключ, чтобы задать одно ограничение. Любой неуказанный ключ по умолчанию принимает значение null. В следующем примере только ограничение глубины увеличивается до 500; MAX_GROUPING_TOKENS не задан, поэтому sqlparse не применяет ограничение количества токенов при этом запуске.

dbt compile --sqlparse '{"MAX_GROUPING_DEPTH": 500}'

Если ключи не указаны, оба ограничения остаются незаданными (null), и sqlparse не применяет никаких ограничений группировки.

Вы можете использовать --sqlparse со следующими командами:

Нашли ошибку?

0