BigQuery 使い方(4) 〜テーブルの作成、変更、削除

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 EXISTStable_name RENAME TO new_table_nam

既存のテーブルの名称を table_name から new_table_name に変更します。
なお、外部テーブルに対してこの構文は適用できません。

データセット sales のテーブル oldtableを newtable に変更してみます。

名称が変わっていることを確認できます。

テーブルのカラム名を変更する構文は、以下のように記述します。

ALTER TABLE [IF EXISTStable_name
RENAME COLUMN [IF EXISTScolumn_A TO column_B

既存のテーブル table_name のカラム column_A を column_B に変更します。
IF EXISTS 句を指定しない場合には、該当するカラムが存在しなければエラーを返します。
IF EXISTS 句を指定した場合には、該当するカラムが存在しなければエラーを返さず、アクションも実行されません。

データセット sales のテーブルのカラム Order_Date を dateAに変更してみます。

名前の変更を確認できます。

テーブルの削除(DROP)

テーブルを削除するDROPの構文は、以下のように記述します。

DROPTABLE [IF EXISTStable_name

テーブル名 table_name を指定して削除します。

IF EXISTS 句を指定しない場合には、該当するテーブルが存在しなければエラーを返します。
IF EXISTS 句を指定した場合には、該当するテーブルが存在しなければエラーを返さず、アクションも実行されません。

データセット sales のテーブル newtableを削除してみます。

成功したようです。

本ページでは、SQLのデータ定義言語(DDL : Data Definition Language)を利用してBigQueryのテーブルを作成する方法を紹介しました。

タイトルとURLをコピーしました