テーブル スナップショットのコピー
このドキュメントでは、Google Cloud コンソール、CREATE SNAPSHOT TABLE
SQL ステートメント、bq cp -s --no_clobber
コマンドまたは jobs.insert
API を使用してテーブル スナップショットをコピーする方法について説明します。このチュートリアルは、BigQuery のテーブル スナップショットについての知識をある程度持ったユーザーを対象としています。
権限とロール
このセクションでは、テーブル スナップショットをコピーするために必要な Identity and Access Management(IAM)権限と、それらの権限を付与する IAM 事前定義ロールについて説明します。
権限
テーブル スナップショットをコピーするには、次の権限が必要です。
権限 | リソース |
---|---|
次のすべて:bigquery.tables.get bigquery.tables.getData bigquery.tables.createSnapshot |
コピーするテーブル スナップショット。 |
bigquery.tables.create
|
テーブル スナップショットを含むデータセット。 |
ロール
必要な権限を備えた BigQuery の事前定義ロールは、次のとおりです。
ロール | リソース |
---|---|
次のいずれか:bigquery.dataViewer bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
コピーするテーブル スナップショット。 |
次のいずれか:bigquery.dataEditor bigquery.dataOwner bigquery.admin
|
テーブル スナップショットを含むデータセット。 |
制限事項
既存のテーブルやテーブル スナップショットにテーブル スナップショットをコピーすることはできません。
テーブル スナップショットの制限については、テーブル スナップショットの制限事項をご覧ください。
テーブル スナップショットをコピーする
テーブル スナップショットをコピーするプロセスは、テーブル スナップショットを作成するプロセスと似ています。相違点は、ソーステーブルとしてコピー元のテーブル スナップショットを指定することです。
テーブル スナップショットのコピーは、次のいずれかの方法で作成できます。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] ペインで、表示するテーブル スナップショットのプロジェクトとデータセット ノードを開きます。
テーブルのスナップショットの名前をクリックします。
表示されたテーブル スナップショット ペインで、[コピー] をクリックします。
表示された [テーブルのコピー] ペインで、テーブル スナップショットのコピーの送信先となるプロジェクト、データセット ID、テーブル名を入力します。
[コピー] をクリックします。
SQL
CREATE SNAPSHOT TABLE
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE SNAPSHOT TABLE COPY_PROJECT_ID.COPY_DATASET_NAME.COPY_NAME CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
次のように置き換えます。
COPY_PROJECT_ID
: スナップショット コピーを作成するプロジェクトのプロジェクト ID。COPY_DATASET_NAME
: スナップショット コピーを作成するデータセットの名前。COPY_NAME
: 作成するスナップショット コピーの名前。SNAPSHOT_PROJECT_ID
: コピーするスナップショットが含まれているプロジェクトのプロジェクト ID。SNAPSHOT_DATASET_NAME
: コピーするスナップショットが含まれているデータセットの名前。SNAPSHOT_NAME
: コピーするスナップショットの名前。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。
bq
Cloud Shell で次のコマンドを入力します。
bq cp \ -s \ --no_clobber \ SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \ COPY_PROJECT_ID:COPY_DATASET_NAME.COPY_NAME
次のように置き換えます。
SNAPSHOT_PROJECT_ID
: コピーするスナップショットが含まれているプロジェクトのプロジェクト ID。SNAPSHOT_DATASET_NAME
: コピーするスナップショットが含まれているデータセットの名前。SNAPSHOT_NAME
: コピーするスナップショットの名前。COPY_PROJECT_ID
: スナップショット コピーを作成するプロジェクトのプロジェクト ID。COPY_DATASET_NAME
: スナップショット コピーを作成するデータセットの名前。COPY_NAME
: 作成するスナップショット コピーの名前。
--no_clobber
フラグは必須です。
API
次のパラメータを指定して、jobs.insert
メソッドを呼び出します。
パラメータ | 値 |
---|---|
projectId |
このオペレーションの請求先プロジェクトのプロジェクト ID。 |
リクエストの本文 | { "configuration": { "copy": { "sourceTables": [ { "projectId": "SNAPSHOT_PROJECT_ID", "datasetId": "SNAPSHOT_DATASET_NAME", "tableId": "SNAPSHOT_NAME" } ], "destinationTable": { "projectId": "COPY_PROJECT_ID", "datasetId": "COPY_DATASET_NAME", "tableId": "COPY_NAME" }, "operationType": "SNAPSHOT", "writeDisposition": "WRITE_EMPTY" } } } |
次のように置き換えます。
SNAPSHOT_PROJECT_ID
: コピーするスナップショットが含まれているプロジェクトのプロジェクト ID。SNAPSHOT_DATASET_NAME
: コピーするスナップショットが含まれているデータセットの名前。SNAPSHOT_NAME
: コピーするスナップショットの名前。COPY_PROJECT_ID
: スナップショット コピーを作成するプロジェクトのプロジェクト ID。COPY_DATASET_NAMECOPY_DATASET_NAME
: スナップショット コピーを作成するデータセットの名前。COPY_NAME
: 作成するスナップショット コピーの名前。