SQLFluff и статический анализ
Проверяйте SQL с помощью SQLFluff, соблюдайте единый стиль и автоматически исправляйте распространённые проблемы форматирования
«SQLFluff и статический анализ» — бесплатный урок SQL Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.
Зачем проверять SQL
SQL пишется вручную, поэтому его легко форматировать непоследовательно. Статический анализ автоматически применяет единый стиль:
- Строчные и прописные ключевые слова UPPER
- Запятая в конце или начале строки
- Соглашения об именовании таблиц и столбцов
- Отступы
- Антишаблоны (SELECT *, неоднозначные соединения и т. д.)
SQLFluff: фактический стандарт для проверки SQL
Инструмент с открытым исходным кодом, учитывающий диалект, поддерживает множество разновидностей SQL и отлично работает с dbt:
pip install sqlfluff
sqlfluff lint models/
sqlfluff fix models/ # auto-fix where safeНастройка SQLFluff
Конфигурация .sqlfluff:
[sqlfluff]
dialect = postgres
templater = dbt
max_line_length = 120
[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = upper
[sqlfluff:rules:capitalisation.identifiers]
extended_capitalisation_policy = lowerСтандартные правила
В SQLFluff более 50 правил: именование, компоновка, регистр, структура и неоднозначность. Отключайте правила по отдельности:
[sqlfluff]
exclude_rules = AM05, ST05Отключение в строке
Пропустите проверку для одной строки:
SELECT * -- noqa: AM04
FROM users;Интеграция с dbt
SQLFluff понимает Jinja и ref():
sqlfluff lint --templater dbt models/Хук перед фиксацией
Запускайте SQLFluff перед каждой фиксацией:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/sqlfluff/sqlfluff
rev: 3.0.0
hooks:
- id: sqlfluff-lint
- id: sqlfluff-fixВ CI
Блокируйте PR с ошибками проверки:
# GitHub Actions
- name: SQLFluff
run: |
pip install sqlfluff
sqlfluff lint models/Антишаблоны для проверки
- L044/AM04 — избегайте SELECT *
- AM05 — избегайте неявного JOIN (запятой)
- ST05 — избегайте подзапросов в FROM (используйте CTE)
- L010 — непоследовательный регистр
Форматировщик и линтер
SQLFluff делает и то и другое — проверяет И автоматически форматирует:
sqlfluff format models/ # newer: dedicated format command
sqlfluff fix models/ # alias for format + safe rule fixesДругие инструменты
- pg_format — форматирует SQL в удобочитаемый вид (ориентирован на PostgreSQL)
- SQLFluff используется чаще всего и интегрируется с dbt
- форматирование при сохранении в редакторах (VS Code, JetBrains)
Итоги
Линтинг устраняет споры о стиле и выявляет настоящие ошибки.
- SQLFluff для линтинга и форматирования
- .sqlfluff задаёт правила
- Запускайте в pre-commit и непрерывной интеграции
- Сочетайте с dbt для сквозных рабочих процессов с SQL
Быстрая проверка
Какой инструмент является стандартом с открытым исходным кодом для линтинга SQL и работает с шаблонами dbt?
Часто задаваемые вопросы
Урок «SQLFluff и статический анализ» бесплатный?
Да — полный текст урока «SQLFluff и статический анализ» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.
Чему я научусь в уроке «SQLFluff и статический анализ»?
Проверяйте SQL с помощью SQLFluff, соблюдайте единый стиль и автоматически исправляйте распространённые проблемы форматирования Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SQL Academy?
Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «SQLFluff и статический анализ»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SQL Academy?
Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы DBT (Data Build Tool)
- SQLFluff и статический анализ
- Тестирование SQL: тесты dbt и Great Expectations
- CI для изменений схемы (GitHub Actions)