この記事では、SQLを書く際に知っておくと便利な「後から読み返しやすいインデントの使い方」についてまとめています。
読みやすいコードとは
SQLのクエリは、後から編集したりチームメンバーに共有して読んでもらったり、ということがよくあると思います。後から読み返しやすいコードを意識して書くと、自分も他の人も理解しやすく、メンテナンスもしやすくなります。
コードを読みやすくする上で一番重要なのは、「階層構造や句のカタマリがぱっと見て分かりやすいか」です。
具体的にどのように書いていけばよいか、1つずつ見ていきましょう。
以下が、弊社のデータマネジメントチームで推奨されているコーディングスタイルの例です。
WITH campaign_ids AS ( SELECT id , SUM(amount) AS total FROM database02.table02 GROUP BY id HAVING SUM(amount) >= 10000 ) SELECT t1.column , t2.total FROM database01.table01 AS t1 INNER JOIN campaign_ids AS t2 ON t1.id = t2.id WHERE t1.column_01 LIKE 'xxx%'
書くときのポイント
- キーワード(予約語)は大文字で
- リインデントで階層構造を作る
- 要素を複数並べる場合は改行して同じインデントに
- サブクエリの代わりにWITH句で書く
句(例:SELECT, FROM, WHERE, GROUP BYなど)や演算子(例:LIKE, AND, OR)、関数(例:COUNT, SUM, CASTなど)は大文字で書くことで、キーワードとキーワード以外の単語と見分けがつきやすくなります
SELECT, FROM, WHEREなど、文の骨組みとなるような句の後は改行とインデントを下げることによって階層構造を見やすくします。
また、JOIN句は、FROM句よりもインデントを下げて記載することで、FROM句の中に含まれていることが分かりやすくなります。
カラム名やWHERE句の条件等が複数並ぶ場合は、改行して同じインデントに複数並べると、並列の項目がいくつあるのかが分かりやすいです。
また、カラム名の場合は改行後の先頭にカンマ+半角スペースを付けるとより見やすくなります。
サブクエリを使うとクエリの構造が複雑に見えてしまい、可読性が下がってしまいます。そこで、WITH句を使ってサブクエリで作成するテンポラリなテーブルをSELECT文の前に出すことで、読みやすく、理解しやすくなります。
WITH句を使ってAVGなどの集計値を事前に作成しておいたり、後でJOINするためのテーブルを作成しておいたりすると、読み手側からも分かりやすく、他のクエリに転用する際もやりやすいため、大変便利です。
CDPは自社メンバーや外部パートナーなど複数の方で運用していくものなので、可読性の高いコードを心がけましょう。