BigQueryのコーディング規約
Modified: 2023/06/10
日々業務でBigQueryを利用しているのですが、BigQueryは明確なコーディング規約がなく、組織ごとに独自のルールが設定されていることが多いかと思います。
今回は筆者が日々気をつけていることをご紹介します。
前提
- standard SQLを利用する
コーディングルール
大文字・小文字
- 予約語はなるべく大文字を使う
- 関数名、変数、カラム、テーブル名は小文字 Consoleからちょっと実行して結果を確かめる場合などはSHIFTを押すのがつらいので、予約語を小文字で書くのも許容するが、 データ基盤で自動化や定期実行するクエリなど他の人があとから、読む可能性のあるものはこのルールを守る。
変数
- 変数定義は、一時UDFを利用するのではなく
CREATE TEMP FUNCTION is_user() AS (TRUE);
DECLARE を利用する
DECLARE is_user BOOL DEFAULT TRUE;
- 変数名が文字の場合は、シングルクオート(')ではなくダブルクオート(")で囲う
- 変数名にはデータ型がわかるように命名することを意識する。特に日付関係。
例)TIMESTAMP型の場合は
event_timestamp
、DATE型はevent_date
、DATETIMEは、event_datetime
かevent_dt
- なるべく
SELECT *
は使わずに、変数名を書くようにする
インデント
- インデントは、2スペース
- Consoleで実行する場合もdefaultでこの設定になっているため
サブクエリ
- なるべくWITH句を利用する
SELECT column_1, column_2, FROM ( SELECT column_1, column_2, FROM table_1 )
を避けて、
WITH sub_query AS ( SELECT column_1, column_2, FROM table_1 ) SELECT column_1, column_2, FROM sub_query
にする。サブクエリに適切な名前をつけることで可読性が上がる。
コメント
- クエリの先頭に
/* コメント */
ブロックで囲んだクエリの説明を記述する。 - インラインコメントは、--を利用する
その他
- エイリアスのASは省略しない
- JOINのOUTERは省略する
- カンマ(,)は文末に置き、最終行にもつけるようにする
- 余分なgitのdiffがでないようにするため