테이블 클론 만들기

이 문서에서는 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: 만들려는 테이블 클론의 이름입니다.

액세스 제어

테이블 클론을 만들 때 테이블 클론에 대한 액세스 권한이 다음과 같이 설정됩니다.

  • 행 수준 액세스 정책이 기본 테이블에서 테이블 클론으로 복사됩니다.
  • 열 수준 액세스 정책이 기본 테이블에서 테이블 클론으로 복사됩니다.
  • 테이블 수준 액세스는 다음과 같이 결정됩니다.

    • 테이블 클론이 기존 테이블을 덮어쓰면 기존 테이블의 테이블 수준 액세스는 유지됩니다. 태그는 기본 테이블에서 복사되지 않습니다.
    • 테이블 클론이 새 리소스인 경우 테이블 클론이 생성된 데이터 세트의 액세스 정책에 따라 테이블 클론의 테이블 수준 액세스가 결정됩니다. 또한 태그가 기본 테이블에서 테이블 클론으로 복사됩니다.

다음 단계

  • 테이블 클론을 만든 후에는 표준 테이블을 사용할 때처럼 사용할 수 있습니다. 자세한 내용은 테이블 관리를 참조하세요.