테이블 클론 만들기
이 문서에서는 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: 만들려는 테이블 클론의 이름입니다.
액세스 제어
테이블 클론을 만들 때 테이블 클론에 대한 액세스 권한이 다음과 같이 설정됩니다.
- 행 수준 액세스 정책이 기본 테이블에서 테이블 클론으로 복사됩니다.
- 열 수준 액세스 정책이 기본 테이블에서 테이블 클론으로 복사됩니다.
- 테이블 수준 액세스는 다음과 같이 결정됩니다. 
다음 단계
- 테이블 클론을 만든 후에는 표준 테이블을 사용할 때처럼 사용할 수 있습니다. 자세한 내용은 테이블 관리를 참조하세요.