テーブル クローンを作成する

このドキュメントには、CREATE TABLE CLONE SQL ステートメント、bq cpコマンドまたは jobs.insert API 呼び出しを使用して、テーブルをテーブル クローンにコピーする方法が記載されています。このドキュメントは、テーブル クローンに精通しているユーザーを対象としています。

権限とロール

このセクションでは、テーブル クローンの作成に必要な Identity and Access Management(IAM)権限と、その権限を付与する IAM 事前定義ロールについて説明します。

権限

テーブル クローンを作成するには、次の権限が必要です。

権限 リソース
次のすべて:

bigquery.tables.get
bigquery.tables.getData
クローンを作成するテーブル。
bigquery.tables.create
bigquery.tables.updateData
テーブル クローンを含むデータセット。

ロール

必要な権限を持つ BigQuery 事前定義ロールは次のとおりです。

ロール リソース
次のいずれか:

bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
クローンを作成するテーブル。
次のいずれか:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
新しいテーブル クローンを含むデータセット。

テーブル クローンを作成する

GoogleSQL、bq コマンドライン ツール、または BigQuery API を使用して、テーブル クローンを作成します。

SQL

テーブル クローンを作成するには、CREATE TABLE CLONEステートメントを使用します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    CREATE TABLE
    myproject.myDataset_backup.myTableClone
    CLONE myproject.myDataset.myTable;

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

次のように置き換えます。

  • PROJECT は、ターゲット プロジェクトのプロジェクト ID です。このプロジェクトは、クローンを作成するテーブルを含むプロジェクトと同じ組織に存在する必要があります。
  • DATASET は、ターゲット データセットの名前です。 このデータセットは、クローンを作成するテーブルを含むデータセットと同じリージョンに存在する必要があります。
  • CLONE_NAME は、作成するテーブル クローンの名前です。

bq

bq cp コマンドを使用し、--clone フラグを指定します。

Cloud Shell に移動

bq cp --clone -n project1:myDataset.myTable PROJECT:DATASET.CLONE_NAME

次のように置き換えます。

  • PROJECT は、ターゲット プロジェクトのプロジェクト ID です。このプロジェクトは、クローンを作成するテーブルを含むプロジェクトと同じ組織に存在する必要があります。
  • DATASET は、ターゲット データセットの名前です。 このデータセットは、クローンを作成するテーブルを含むデータセットと同じリージョンに存在する必要があります。クローンを作成するテーブルを含むデータセットと同じリージョンにデータセットがない場合は、テーブル全体がコピーされます。
  • CLONE_NAME は、作成するテーブル クローンの名前です。

ベーステーブルと同じプロジェクトでクローンを作成する場合は、次に示すように、プロジェクトの指定をスキップできます。

bq cp --clone -n 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 は、作成するテーブル クローンの名前です。

アクセス制御

テーブル クローンを作成すると、テーブル クローンへのアクセスは次のように設定されます。

  • 行レベルのアクセス ポリシーは、ベーステーブルからテーブル クローンにコピーされます。
  • 列レベルのアクセス ポリシーは、ベーステーブルからテーブル クローンにコピーされます。
  • テーブルレベルのアクセスは次のように決定されます。

    • テーブル クローンが既存のテーブルを上書きする場合は、既存のテーブルに対するテーブルレベルのアクセスが維持されます。 タグはベーステーブルからコピーされません。
    • テーブル クローンが新しいリソースの場合、テーブル クローンに対するテーブルレベルのアクセスは、テーブル クローンが作成されるデータセットのアクセス ポリシーによって決まります。 さらに、タグがベーステーブルからテーブル クローンにコピーされます。

次のステップ

  • テーブル クローンを作成した後は、標準テーブルと同じように使用できます。詳細については、テーブルを管理するをご覧ください。