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

BigQueryは多種多様なビッグデータの格納やインポート処理、分析が可能なGoogleのデータウェアハウスサービスです。

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

スポンサーリンク

テーブルの作成(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_name

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

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

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

テーブルのカラムの名前を変更します。

ALTER TABLE[IF EXISTS] table_name
RENAME COLUMN [IF EXISTS] column_A TO column_B

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

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

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

テーブルの削除(DROP)

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

DROPTABLE[IF EXISTS] table_name

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

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

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

成功したようです。

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

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