データ操作言語を使用したテーブルデータの更新
このページでは、データ操作言語(DML)を使用して BigQuery テーブルのデータを更新および削除する方法について説明します。DML を使用して既存のテーブルに行を追加する方法については、このページでは取り上げません。DML を使用した行の追加については、DML 構文リファレンスの INSERT
ステートメントをご覧ください。
BigQuery の DML にはいくつかの制限事項があります。また、DML 固有の料金もあります。
をご覧ください。データの更新
次のサンプル ファイルを使用して以下の手順を行います。このファイルは、匿名化のためにマスクする IP アドレス列を含むテーブルです。
次の手順に沿ってサンプルデータをテーブルに読み込み、ip_address
列の値を更新します。
ステップ 1. UserSessions
テーブルに JSON ファイルを読み込みます。
ステップ 2. 各行の ip_address
列の最後のオクテットをマスクするには、次の DML クエリを実行します。
UPDATE sample_db.UserSessions SET ip_address = REGEXP_REPLACE(ip_address, r"(\.[0-9]+)$", ".0") WHERE TRUE
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Java の設定手順を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Python の設定手順を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
データの削除
次のサンプル ファイルを使用して以下の手順を行います。これらのファイルは、ユーザー セッション解析用の複数のテーブルと削除対象ユーザーのテーブルを含むデータセットです。
次の手順では、データを 3 つのテーブルに読み込んでから、DeletedUsers テーブルのユーザーを削除します。
ステップ 1. DeletedUsers、Users、UserSessions の各テーブルに JSON ファイルを読み込みます。
Console
[エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。
アクション オプションを開いて、[開く] をクリックします。
詳細パネルで [テーブルを作成]
をクリックします。[テーブルの作成元] で [アップロード] を選択します。
[ファイルを選択] で、ダウンロードしたファイルを参照して選択します。
[ファイル形式] で [JSON(改行区切り)] を選択します。
[テーブル名] に、適切なテーブル名を入力します。
[スキーマ] セクションの [フィールドを追加] をクリックし、[名前] にテーブル内の列の名前を入力し、[型] で適切なデータ型を選択します。
- テーブル内のすべての列を入力するまで、[フィールドを追加] をクリックして、この操作を繰り返します。
[テーブルを作成] をクリックします。
サンプル テーブルのスキーマは次のとおりです。
- DeletedUsers
- 名前
id
、型INTEGER
- 名前
- Users
- 名前
id
、型INTEGER
- 名前
date_joined
、型TIMESTAMP
- 名前
- UserSessions
- 名前
id
、型STRING
- 名前
user_id
、型INTEGER
- 名前
login_time
、型TIMESTAMP
- 名前
logout_time
、型TIMESTAMP
- 名前
ip_address
、型STRING
- 名前
bq
bq
コマンドライン ツールを使用してテーブルを作成するには、bq load
コマンドを使用します。--location
フラグを指定して、その値をロケーションに設定します。--location
フラグは省略可能です。たとえば、BigQuery を asia-northeast1
(東京)リージョンで使用している場合、load コマンドは以下のようになります。
bq --location=asia-northeast1 load ...
DeleteUsers
テーブルの作成
bq --location=asia-northeast1 load \
--source_format=NEWLINE_DELIMITED_JSON \
sample_db.DeletedUsers \
deletedUsersData.json \
id:integer
Users
テーブルの作成
bq --location=asia-northeast1 load \
--source_format=NEWLINE_DELIMITED_JSON \
sample_db.Users \
usersData.json \
id:integer,date_joined:timestamp
UserSessions
テーブルの作成
bq --location=asia-northeast1 load \
--source_format=NEWLINE_DELIMITED_JSON \
sample_db.UserSessions \
userSessionsData.json \
id:string,user_id:integer,login_time:timestamp,logout_time:timestamp,ip_address:string
ステップ 2. DeletedUsers テーブルでユーザーに関する情報を削除するには、次の DML クエリを実行します。
UsersSessions
からの削除DELETE FROM sample_db.UserSessions WHERE user_id in (SELECT id from sample_db.DeletedUsers)
Users
からの削除DELETE FROM sample_db.Users WHERE id in (SELECT id from sample_db.DeletedUsers)
テーブルのセキュリティ
BigQuery でテーブルへのアクセスを制御するには、テーブルのアクセス制御の概要をご覧ください。
次のステップ
- DML リファレンス ページをご覧ください。
- DML 構文ページの DML の構文およびサンプルをご覧ください。
- 複数の DML ステートメントを実行して結果をアトミックに commit できるマルチステートメント トランザクションについて学習する。