dbt Cloud上でSQLFluffを使ってリンティングとフォーマッティングしてみた
さがらです。
dbt CloudのIDE上でSQLFluffを使ってリンティングとフォーマッティングが出来る機能を試してみたので、本記事でまとめてみます。
SQLFluffの有効化
まず、dbt CloudのIDE上でSQLFluffを有効化する必要があります。
dbt CloudのIDEではデフォルトで「sqlfmt」を用いたフォーマッティングができるようになっているのですが、SQLFluffを使う場合には設定を切り変える必要があります。
具体的には、IDEの右下でCode quality
タブ→Config
を押してから、SQLFluff
を選択してSave
を押せばOKです。
SQLFluffを使ってみる
ということで、実際にSQLFluffをdbt Cloud上で使ってみます。
まずはSQLFluffのデフォルトの設定で試してみます。
下図のようにSQLを書いた状態で、IDEの右下のLint
を押してみます。
すると、IDEの右下にリンティングを行った結果が表示され、IDE上にも波線と合わせて何がルールに沿っていないかが表示されます。
また、IDE上で波線をクリックして表示されるアイコンを更にクリックし、Fix ass issues
を押すと、リンティングでの指摘事項を自動で修正(フォーマッティング)してくれます。
ちなみに、リンティングをせずにいきなりフォーマッティングさせることも可能です。
IDEの右下からLintの横の下向き矢印を押して、Fix
を押すことで、フォーマッティングすることが出来ます。(一度Fix
を押すとLint
ではなくFix
が常時IDE上に表示されるようになります。Lint
を押すとまたLint
が常時IDE上に表示されるようになります。)
設定値をカスタムしてみた
次に、SQLFluffはユーザー側で設定をカスタムすることが出来るため、実際にやってみます。
dbt Cloud上で行うこととしては、dbt projectのルート階層で.sqlfluff
というファイルを作成し、任意の設定値を定義すればOKです。カスタマイズの参考としては、こちらの公式Docでdbt Labs社から推奨されている設定などが参考になると思います。
一つ例としてわかりやすいように、tab_space_size = 16
に設定したうえで、Lint
とFix
を押してみます。(一般的にはtab_space_size = 4
などを設定することが多いです、実際に適用する際はご注意ください。)
まずLint
を押すと、下図のようにExpected indent of 16 spaces.
というエラーが出てきました。
Fix
を押すと、下図のようにインデントを表すスペースが半角スペース16個分に修正されました。このように、.sqlfluff
ファイルを作成することで設定をカスタムできることがわかったと思います。
最後に
簡単ではありますが、dbt CloudのIDE上でSQLFluffを使ってリンティングとフォーマッティングが出来る機能を試してみました。
独自のSQLのコーディング規則を設けたい場合には便利な機能だと思いますので、ぜひ活用してみてください!