テーブル クローンを作成する
このドキュメントには、CREATE TABLE CLONE SQL ステートメント、bq cpコマンドまたは jobs.insert API 呼び出しを使用して、テーブルをテーブル クローンにコピーする方法が記載されています。このドキュメントは、テーブル クローンに精通しているユーザーを対象としています。
権限とロール
このセクションでは、テーブル クローンの作成に必要な Identity and Access Management(IAM)権限と、その権限を付与する IAM 事前定義ロールについて説明します。
権限
テーブル クローンを作成するには、次の権限が必要です。
| 権限 | リソース |
|---|---|
次のすべて:bigquery.tables.getbigquery.tables.getData |
クローンを作成するテーブル。 |
bigquery.tables.createbigquery.tables.updateData
|
テーブル クローンを含むデータセット。 |
ロール
必要な権限を持つ BigQuery 事前定義ロールは次のとおりです。
| ロール | リソース |
|---|---|
次のいずれか:bigquery.dataViewerbigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
クローンを作成するテーブル。 |
次のいずれか:bigquery.dataEditorbigquery.dataOwnerbigquery.admin
|
新しいテーブル クローンを含むデータセット。 |
テーブル クローンを作成する
GoogleSQL、bq コマンドライン ツール、または BigQuery API を使用して、テーブル クローンを作成します。
SQL
テーブル クローンを作成するには、CREATE TABLE CLONE ステートメントを使用します。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE TABLE myproject.myDataset_backup.myTableClone CLONE myproject.myDataset.myTable;
[実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
次のように置き換えます。
PROJECTは、ターゲット プロジェクトのプロジェクト ID です。このプロジェクトは、クローンを作成するテーブルを含むプロジェクトと同じ組織に存在する必要があります。DATASETは、ターゲット データセットの名前です。 このデータセットは、クローンを作成するテーブルを含むデータセットと同じリージョンに存在する必要があります。CLONE_NAMEは、作成するテーブル クローンの名前です。
bq
bq cp コマンドを使用し、--clone フラグを指定します。
bq cp --clone --no_clobber project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME
次のように置き換えます。
PROJECTは、ターゲット プロジェクトのプロジェクト ID です。このプロジェクトは、クローンを作成するテーブルを含むプロジェクトと同じ組織に存在する必要があります。DATASETは、ターゲット データセットの名前です。 このデータセットは、クローンを作成するテーブルを含むデータセットと同じリージョンに存在する必要があります。クローンを作成するテーブルを含むデータセットと同じリージョンにデータセットがない場合は、テーブル全体がコピーされます。CLONE_NAMEは、作成するテーブル クローンの名前です。
--no_clobber フラグは必須です。
ベーステーブルと同じプロジェクトでクローンを作成する場合は、次に示すように、プロジェクトの指定をスキップできます。
bq cp --clone --no_clobber myDataset.myTable DATASET.CLONE_NAME
API
operationType フィールドを CLONE に設定して jobs.insert メソッドを呼び出します。
| パラメータ | 値 |
|---|---|
projectId |
ジョブを実行するプロジェクトのプロジェクト ID。 |
| リクエストの本文 | { "configuration": { "copy": { "sourceTables": [ { "projectId": "myProject", "datasetId": "myDataset", "tableId": "myTable" } ], "destinationTable": { "projectId": "PROJECT", "datasetId": "DATASET", "tableId": "CLONE_NAME" }, "operationType": "CLONE", "writeDisposition": "WRITE_EMPTY", } } } |
次のように置き換えます。
PROJECTは、ターゲット プロジェクトのプロジェクト ID です。このプロジェクトは、クローンを作成するテーブルを含むプロジェクトと同じ組織に存在する必要があります。DATASETは、ターゲット データセットの名前です。 このデータセットは、クローンを作成するテーブルを含むデータセットと同じリージョンに存在する必要があります。クローンを作成するテーブルを含むデータセットと同じリージョンにデータセットがない場合は、テーブル全体がコピーされます。CLONE_NAMEは、作成するテーブル クローンの名前です。
アクセス制御
テーブル クローンを作成すると、テーブル クローンへのアクセスは次のように設定されます。
- 行レベルのアクセス ポリシーは、ベーステーブルからテーブル クローンにコピーされます。
- 列レベルのアクセス ポリシーは、ベーステーブルからテーブル クローンにコピーされます。
テーブルレベルのアクセスは次のように決定されます。
次のステップ
- テーブル クローンを作成した後は、標準テーブルと同じように使用できます。詳細については、テーブルを管理するをご覧ください。