【BigQuery】CREATEクエリでも「IF NOT EXISTS」を付ければ自動化・定期実行ができる

20230730_BigQuery_2 クラウドプラットフォーム

前回CREATE文でテーブルを作成しました。
「CREATE TABLE 〜」のクエリでは反復して実行するワークフローには不向きです。

クリックして拡大できます

今回はCREATE文で定期実行してもエラーにならない方法をご紹介します。

IF NOT EXISTS

「CREATE TABLE」の後に「IF NOT EXISTS」を付けることで、たとえすでにテーブルが作成されていてもエラーになることはありません。

クリックして拡大できます
CREATE TABLE IF NOT EXISTS `sql-book-384011.sample.20230730_training_menu_arm`
(
  menu STRING OPTIONS(description = 'トレーニングメニュー'),
  use STRING OPTIONS(description = '使う器具'),
  repetition_maximum INTEGER OPTIONS(description = '最大反復回数'),
  set_count INTEGER OPTIONS(description = 'セット数'),
  rest INTEGER OPTIONS(description = '休憩時間(分)')
) 
OPTIONS (description = '腕の日のトレーニングメニュー')

結果が変わりました。
IF NOT EXISTS」があるとテーブルがないときだけクエリを実行してくれます。

テーブルがすでにあるときは図のような「テーブル 20230730_training_menu_arm はすでに存在します。」とメッセージを出してくれるので親切ですね!

実行履歴を確認する

実行履歴も見ておきましょう。

上が「IF NOT EXISTS」があるクエリ、下がないクエリです。
上はクエリが成功していますが、下はクエリが失敗していますね。

クリックして拡大できます

もし「IF NOT EXISTS」がない状態で定期実行をしているとクエリを実行するたびにエラーが発生し、定期実行の意味がありません。

「IF NOT EXISTS」を付けることですでにテーブルが作られていたとしても処理が止まることはありません。これだと定期実行でも使えそうですね!

まとめ

将来的に自動や定期実行するのであればCREATE文のあとに「IF NOT EXISTS」を付けておきましょう。

実行のたびにエラーが発生しないので便利です!