🐕
SQLFluffをSnowflakeとdbtで使ってみる
概要
dbtを作っている会社がつくっているというsqlfluffを試してみます。
SQLFluffとは、SQLのLinter(文法やコードスタイルをチェック)したり、fix(整形)したりするツール
※かなり昔に下書きとして書いた記事をエイやって公開しちゃいます
対象としては、
- ANSI SQL
- BigQuery,Snowflake,Redshift
- MySQL,Postgres
などもある。
あと、dbt にも対応している(Jinjaマクロなども)
$ sqlfluff dialects
調べることができる。
インストール
MacOSを使っているので、homebrew
を使ってインストールします。
※他には、pip install sqlfluff
というやり方もあります。
$ brew install sqlfluff
Running `brew update --preinstall`...
==> Auto-updated Homebrew!
Updated 3 taps (homebrew/cask-versions, homebrew/core and homebrew/cask).
==> New Formulae
.............
==> awscli
The "examples" directory has been installed to:
/usr/local/share/awscli/examples
zsh completions and functions have been installed to:
/usr/local/share/zsh/site-functions
==> pipenv
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
なんやかんやインストールやアップグレードが走るので、そこそこ時間がかかりました。
インストールしたバージョンの確認を行います。
% sqlfluff version
0.11.2
Lintを試してみる (ANSI SQL & Snowflake)
SQLのコード規約を作成
- 一行80文字
- インデントはスペース2文字
- 予約語・関数は小文字に統一
- テーブル名なども小文字に統一
[sqlfluff:rules]
tab_space_size = 2
[sqlfluff:rules:L07]
operator_new_lines = after
[sqlfluff:rules:L010]
capitalisation_policy = lower
[sqlfluff:rules:L016]
ignore_comment_lines = True
indent_unit = space
max_line_length = 80
tab_space_size = 2
[sqlfluff:rules:L019]
comma_style = leading
[sqlfluff:rules:L030]
extended_capitalisation_policy = lower
Rule Reference
参考
Discussion