SQLluff -это диалектный и настраиваемый SQL Linter. Разработанный с учетом приложений ELT, SQLluff также работает с Templating Jinja и DBT. SQLluff будет автоматически починить большинство ошибок в снятии, что позволит вам сосредоточить свое время на том, что имеет значение.
Хотя SQL достаточно последовательна в своих реализациях, есть несколько различных диалектов с вариациями синтаксиса и грамматики. SQLluff в настоящее время поддерживает следующие диалекты SQL (хотя, возможно, не полностью):
sparksql с синтаксисом каталога Unity).Мы стремимся облегчить расширение поддержки этих диалектов, а также добавить другие, не поддерживаемые в настоящее время диалекты. Пожалуйста, поднимите вопросы (или поднимайте любые существующие вопросы), чтобы сообщить нам о спросе на отсутствие поддержки.
Запросы на получение от тех, которые знают отсутствующий синтаксис или диалекты, особенно приветствуются и являются вопросом для вас добавить поддержку. Мы рады работать с любыми потенциальными участниками над этим, чтобы помочь им добавить эту поддержку. Пожалуйста, сначала поднимите проблему для любого большого изменения функций, чтобы убедиться, что он подходит для этого проекта, прежде чем тратить время на эту работу.
Сам SQL не поддается модульности, поэтому для введения некоторой гибкости и повторного использования его часто шаблоны, как обсуждается больше в нашей документации по модульности.
SQLluff поддерживает следующие шаблоны:
Опять же, пожалуйста, поднимите проблемы, если вы хотите поддержать больше языков/синтаксисов шаблона.
У нас также есть расширение кода VS:
Чтобы начать, установите пакет и запустите sqlfluff lint или sqlfluff fix .
$ pip install sqlfluff
$ echo " SELECT a + b FROM tbl; " > test.sql
$ sqlfluff lint test.sql --dialect ansi
== [test.sql] FAIL
L: 1 | P: 1 | LT01 | Expected only single space before ' SELECT ' keyword.
| Found ' ' . [layout.spacing]
L: 1 | P: 1 | LT02 | First line should not be indented.
| [layout.indent]
L: 1 | P: 1 | LT13 | Files must not begin with newlines or whitespace.
| [layout.start_of_file]
L: 1 | P: 11 | LT01 | Expected only single space before binary operator ' + ' .
| Found ' ' . [layout.spacing]
L: 1 | P: 14 | LT01 | Expected only single space before naked identifier.
| Found ' ' . [layout.spacing]
L: 1 | P: 27 | LT01 | Unnecessary trailing whitespace at end of file.
| [layout.spacing]
L: 1 | P: 27 | LT12 | Files must end with a single trailing newline.
| [layout.end_of_file]
All Finished ? !В качестве альтернативы, вы можете использовать официальное изображение SQLfluff Docker или провести игру с помощью SQLFluff Online .
Для полного использования CLI и ссылки на правила, см. Docs SQLluff.
Для полной документации посетите docs.sqlfluff.com. Эта документация генерируется из этого репозитория, поэтому, пожалуйста, поднимайте проблемы или обращайте запросов на любые дополнения, исправления или разъяснения.
SQLluff придерживается семантического управления версиями, поэтому нарушение изменений должно быть ограничено основными выпусками версий. Некоторые элементы (такие как Python API) находятся в менее стабильном состоянии и могут чаще видеть более значительные изменения. Для получения подробной информации о прерывании изменений и о том, как мигрировать между версиями, см. Наши заметки о выпуске. Смотрите The Changerelog для более подробной информации. Если вы хотите присоединиться, рассмотрите возможность внести свой вклад.
Новые выпуски делаются ежемесячно. Для получения дополнительной информации посетите релизы.
У нас быстро растущее сообщество на Slack, приходите и присоединяйтесь к нам!
Следуйте за нами в Twitter @SQLFluff для объявлений и других связанных сообщений.
Мы благодарны всем нашим участникам. В этом проекте есть много дел, и мы только начинаем.
Если вы хотите узнать больше об архитектуре SQLfluff , вы можете найти здесь больше.
Если вы хотите внести свой вклад, ознакомьтесь с открытыми проблемами на GitHub. Вы также можете увидеть руководство по содействию.

Аналитический стек Tendkey, узнайте больше на Datacoves.com.