🍣

sqlfluff ことはじめ

2023/05/16に公開

1. はじめに

リンター(sqlfluff)入れようと思いながら試せていなかったため、設定の備忘録を書きます。

2. 概要

sqlfluffの使用手順を書きます。
dbtと併用して使用していきます。

3. 手順

3-0. 前提

  • 各バージョン一覧
    • dbt core 1.4.5
    • dbt-snowflake 1.4.2
    • sqlfluff 2.1.0

3-1. インストール

pip install sqlfluff

3-2. sqlfluffファイルを配置

dbtのプロジェクト配下に.sqlfluffを追加します。
sqlfileのパラメータのサンプルは最後に載せておきます。

── dbt_project_name
	├── analytics
	├── dbt_packages
	├── logs
	├── models
	...
	├── .sqlfluff
	...

3-3. sqlfluff を実行

下記コマンドを実行します。

sqlfluff lint .

sqlfluff fix .

<コマンド一覧>

Commands:
  dialects  Show the current dialects available.
  fix       Fix SQL files.
  format    Autoformat SQL files.
  lint      Lint SQL files via passing a list of files or using stdin.
  parse     Parse SQL files and just spit out the result.
  render    Render SQL files and just spit out the result.
  rules     Show the current rules in use.
  version   Show the version of sqlfluff.

3-4. 結果の確認

  • All FinishedとなるとOKです

4. 感想

コマンド一つでリンターをかますことができるのは楽だと思いました。またルールにも柔軟性があり、各チームの好みに合わせて設定できる点も良いと思います。

5. 参考

[sqlfluff]
nocolor = False
dialect = snowflake
output_line_length = 80
sql_file_exts = .sql
fix_even_unparsable = False

[sqlfluff:indentation]
indented_joins = True
indented_ctes = False
indented_using_on = True
template_blocks_indent = True

[sqlfluff:rules]
tab_space_size = 4
max_line_length = 120
indent_unit = space
allow_scalar = True
single_table_references = consistent
unquoted_identifiers_policy = all

Discussion