0Pricing
SQL Academy · レッスン

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 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

インラインで無効化する

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-fix

CIで実行する

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. DBT(Data Build Tool)の基礎
  2. SQLFluffとリンティング
  3. SQLのテスト:dbt tests、Great Expectations
  4. スキーマ変更のCI(GitHub Actions)
← SQL Academyに戻る