SQLFluffとリンティング
SQLFluffでSQLをリントし、チームのコーディングスタイルを適用して、一般的な整形問題を自動修正します。
「SQLFluffとリンティング」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
SQLをLintする理由
SQLは手書きのため、書式が不統一になりやすいものです。Lintによって、チームのコーディングスタイルを自動的に適用できます:
- キーワードを小文字にするか大文字にするか
- 行末と行頭のどちらにカンマを置くか
- テーブルと列の命名規則
- インデント
- アンチパターン(SELECT *、曖昧なJOINなど)
SQLFluff:事実上の標準Lintツール
オープンソースで、方言に対応し、多くのSQL系言語をサポートしており、dbtとの相性も優れています:
pip install sqlfluff
sqlfluff lint models/
sqlfluff fix models/ # auto-fix where safeSQLFluffを設定する
.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インラインで無効化する
1行だけチェックをスキップします:
SELECT * -- noqa: AM04
FROM users;dbtとの統合
SQLFluffはJinjaとref()を理解します:
sqlfluff lint --templater dbt models/Pre-Commitフック
コミットする前に毎回SQLFluffを実行します:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/sqlfluff/sqlfluff
rev: 3.0.0
hooks:
- id: sqlfluff-lint
- id: sqlfluff-fixCIで実行する
LintエラーがあるPRをブロックします:
# GitHub Actions
- name: SQLFluff
run: |
pip install sqlfluff
sqlfluff lint models/Lint対象にするアンチパターン
- 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)
まとめ
Lintによりスタイルに関する議論をなくし、実際のバグを検出できます。
- LintとフォーマットにはSQLFluff
- ルールは.sqlfluffで設定
- pre-commitとCIで実行
- dbtと組み合わせてエンドツーエンドのSQLワークフローを構築
確認問題
SQLのLintにおけるオープンソースの標準的なツールで、dbtテンプレートにも対応しているのはどれですか。
よくある質問
「SQLFluffとリンティング」レッスンは無料ですか?
はい。「SQLFluffとリンティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「SQLFluffとリンティング」で何を学びますか?
SQLFluffでSQLをリントし、チームのコーディングスタイルを適用して、一般的な整形問題を自動修正します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「SQLFluffとリンティング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。