BigQueryは多種多様なビッグデータの格納やインポート処理、分析が可能なGoogleのデータウェアハウスサービスです。
本ページでは、SQLのデータ定義言語(DDL : Data Definition Language)を利用して、BigQueryのテーブルを作成(CREATE)、変更(ALTER)、削除(DROP)する方法を紹介します。
テーブルの作成(CREATE)
テーブルを作成するCREATE
の構文は、以下のように記述します。
CREATE [OR REPLACE] TABLE [IF NOT EXISTS]
table_name
[(
column[, …]
)]
[DEFAULT COLLATE collate_specification]
[PARTITION BY partition_expression]
[CLUSTER BY clustering_column_list]
[OPTIONS(table_option_list)]
[AS query_statement]
テーブルの名称 table_name
を定義してテーブルを作成します。OR REPLACE
句を指定した場合は、指定する名前のテーブルが存在する場合に置き換えます。IF NOT EXISTS
と一緒には使用できません。IF NOT EXISTS
句を指定した場合は、指定するテーブルが存在しない場合にのみ作成します。OR REPLACE
とは併用できません。
データセット sales
に新しくテーブル newtable
を作成してみます。
作成されたテーブルを見てみます。
指定した型でカラムが定義されています。
オプションで指定したテーブルの有効期限やコメントも作成されていることが分かります。
既存のテーブルから新しくテーブルを作成することもできます。
テーブル daily_sales
からいくつかのカラムをグループ化してテーブル newtable
を作成してみます。
作成されたテーブルを見てみます。
スキーマを定義していませんが、既存テーブルから継承されました。
テーブルが存在しない場合にのみ作成するように指定することもできます。
以下のように IF NOT EXISTS
を利用します。
テーブルがデータセットに存在する場合は、エラーは返されず、アクションも実行されません。
同じ名前のテーブルが存在する場合には置き換えることもできます。
以下のように OR REPLACE
を利用します。
テーブルがデータセットに存在する場合には、テーブルが置き換えられます。
PARTITION BY
句を利用して分割テーブルを作成することもできます。
分割はBigQueryがデータを取り込む時刻で分割したり、日付のカラムで分割したりすることができます。
最初にデータ取り込み時刻を利用してテーブルを作成してみます。_PARTITIONDATE
を指定すれば日付単位(ex. “2022-03-05”)、_PARTITIONTIME
を指定すれば時間単位(ex. “2022-03-05 11:00:00”)で分割されます。
作成されました。
次にテーブルにある日付のカラムを利用して分割テーブルを作成してみます。
日にち毎の分割テーブルが作成されます。
分割の単位を指定してすることもできます。
「年」で分割テーブルが作成されています。
DDLで外部テーブルを作成する方法については以下をご覧ください。
テーブルの変更(ALTER)
テーブルを変更するALTERの構文は、以下のように記述します。
ALTER TABLE [IF EXISTS] table_name RENAME TO new_table_nam
既存のテーブルの名称を table_name
から new_table_name
に変更します。
なお、外部テーブルに対してこの構文は適用できません。
データセット sales
のテーブル oldtable
を newtable
に変更してみます。
名称が変わっていることを確認できます。
テーブルのカラム名を変更する構文は、以下のように記述します。
ALTER TABLE [IF EXISTS] table_name
RENAME COLUMN [IF EXISTS] column_A TO column_B
既存のテーブル table_name
のカラム column_A
を column_B
に変更します。IF EXISTS
句を指定しない場合には、該当するカラムが存在しなければエラーを返します。IF EXISTS
句を指定した場合には、該当するカラムが存在しなければエラーを返さず、アクションも実行されません。
データセット sales
のテーブルのカラム Order_Date
を dateA
に変更してみます。
名前の変更を確認できます。
テーブルの削除(DROP)
テーブルを削除するDROPの構文は、以下のように記述します。
DROPTABLE [IF EXISTS] table_name
テーブル名 table_name を指定して削除します。
IF EXISTS
句を指定しない場合には、該当するテーブルが存在しなければエラーを返します。IF EXISTS
句を指定した場合には、該当するテーブルが存在しなければエラーを返さず、アクションも実行されません。
データセット sales
のテーブル newtable
を削除してみます。
成功したようです。
本ページでは、SQLのデータ定義言語(DDL : Data Definition Language)を利用してBigQueryのテーブルを作成する方法を紹介しました。