dbt Cloud上でSQLFluffを使ってリンティングとフォーマッティングしてみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
さがらです。
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のコーディング規則を設けたい場合には便利な機能だと思いますので、ぜひ活用してみてください!








