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_datetimeevent_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がでないようにするため