파티션을 나눈 테이블 관리

이 문서에서는 BigQuery에서 파티션을 나눈 테이블을 관리하는 방법을 설명합니다. 내부 데이터화 시간으로 파티션을 나눈 테이블과 파티션을 나눈 테이블은 모두 같은 방식으로 관리합니다. 파티션을 나눈 테이블에는 다음과 같은 관리 작업을 할 수 있습니다.

  • 시간으로 파티션을 나눈 테이블의 다음 속성 업데이트
    • 테이블 만료 시간
    • 파티션 만료 시간
    • 설명
    • 스키마 정의
    • 라벨
  • 시간으로 파티션을 나눈 테이블의 이름 바꾸기(복사)
  • 시간으로 파티션을 나눈 테이블 복사
  • 파티션 복사
  • 시간으로 파티션을 나눈 테이블 삭제
  • 시간으로 파티션을 나눈 테이블의 파티션 삭제

테이블 정보 가져오기, 테이블 나열, 테이블 데이터에 대한 액세스 제어를 비롯한 파티션 테이블 만들기 및 사용에 관한 자세한 내용은 수집 시간으로 파티션을 나눈 테이블 만들기 및 사용이나 파티션을 나눈 테이블 만들기 및 사용을 참조하세요.

파티션을 나눈 테이블 속성 업데이트

파티션을 나눈 테이블의 다음 속성을 업데이트할 수 있습니다.

필수 권한

테이블 속성을 업데이트하려면 데이터세트 수준의 WRITER 액세스 권한이 있거나 bigquery.tables.update 권한을 포함하는 프로젝트 수준의 IAM 역할을 할당받아야 합니다. 다음 사전 정의된 프로젝트 수준 IAM 역할에는 bigquery.tables.update 권한이 포함됩니다.

또한 bigquery.user 역할에는 bigquery.datasets.create 권한이 있기 때문에 bigquery.user 역할에 할당된 사용자는 데이터세트에서 자신이 만든 모든 테이블을 업데이트할 수 있습니다. bigquery.user 역할에 할당된 사용자가 데이터세트를 만들면 이 사용자에게 데이터세트 OWNER 액세스 권한이 부여됩니다. 데이터세트에 대한 OWNER 액세스 권한이 있으면 사용자는 해당 데이터세트와 데이터세트에 포함된 모든 테이블 및 뷰를 완전히 제어할 수 있습니다.

BigQuery의 IAM 역할 및 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

파티션을 나눈 테이블의 설명 업데이트

파티션을 나눈 테이블의 설명을 업데이트하는 프로세스는 표준 테이블의 설명을 업데이트하는 프로세스와 동일합니다. 테이블 설명을 추가하고 변경하는 방법에 대한 자세한 내용은 테이블 설명 업데이트를 참조하세요.

현재 개별 파티션에 대한 설명은 작성할 수 없습니다.

테이블 만료 시간 업데이트

파티션을 나눈 테이블의 만료 시간을 업데이트하는 프로세스는 표준 테이블의 만료 시간을 업데이트하는 프로세스와 동일합니다. 테이블 만료를 추가하고 변경하는 방법에 대한 자세한 내용은 테이블 만료 시간 업데이트를 참조하세요.

파티션 만료 시간 업데이트

명령줄 도구의 bq mk 명령어를 사용하거나 tables.insert API 메소드를 호출하여 테이블을 만들 때 파티션을 나눈 테이블의 파티션 만료 시간을 지정할 수 있습니다. 파티션 만료 시간 지정은 현재 GCP Console 또는 기본 BigQuery 웹 UI에서 지원되지 않습니다.

테이블을 생성할 때 파티션 만료 시간을 지정하면, 파티션 만료 시간이 데이터세트 수준의 기본 파티션 만료 시간을 재정의합니다. 테이블 수준의 파티션 만료 시간을 설정하면, 모든 파티션에 만료 시간이 적용됩니다. 개별 파티션에 다른 만료 시간을 적용할 수는 없습니다.

테이블을 만든 후에는 언제든지 CLI의 bq update 명령어나 API의 tables.patch 메소드를 사용하여 테이블의 파티션 만료 시간을 업데이트할 수 있습니다. 파티션 만료 시간 업데이트는 현재 GCP Console 또는 기본 BigQuery 웹 UI에서 지원되지 않습니다.

테이블의 파티션 만료 날짜를 업데이트하면 해당 설정은 파티션의 생성 시간에 관계없이 모든 파티션에 적용됩니다.

테이블의 파티션 만료 시간을 업데이트할 때는 파티션의 날짜를 기준으로 파티션 만료 시간을 계산해야 합니다. 예를 들어 파티션의 날짜가 2018년 1월 3일이고 파티션 만료 시간을 5일로 설정하면 파티션은 마지막 업데이트 날짜와 관계없이 2018년 1월 8일에 만료됩니다.

파티션을 나눈 테이블에 테이블 만료 시간이 설정되어 있으면 테이블 만료 설정에 따라 해당 테이블과 테이블의 모든 파티션이 삭제됩니다. 테이블 만료는 파티션 만료보다 우선 적용됩니다.

예를 들어 파티션을 나눈 테이블의 만료 시간은 5일로 설정되고 파티션 만료 시간이 7일로 설정되어 있으면 테이블과 모든 파티션은 5일 후에 삭제됩니다.

2016년 12월 13일 이전에 만든 파티션을 나눈 테이블이 있는 프로젝트의 파티션 만료 시간은 파티션이 마지막으로 수정된 날짜를 기준으로 합니다. 이 동작은 해당 프로젝트에서 생성되는 새 테이블에도 적용됩니다. 프로젝트를 새 동작으로 이전하려면 BigQuery 문제 추적기에서 요청을 제출해야 합니다.

파티션을 나눈 테이블의 파티션 만료 시간을 업데이트하는 방법:

기본 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       -- Sets partition expiration to 5 days
       partition_expiration_days=5
     )
     

명령줄

bq update 명령어를 --time_partitioning_expiration 플래그와 함께 사용합니다. 기본 프로젝트가 아닌 다른 프로젝트에서 파티션을 나눈 테이블을 업데이트한다면 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터세트 이름에 추가합니다.

bq update --time_partitioning_expiration [INTEGER] [PROJECT_ID]:[DATASET].[TABLE]

각 항목의 의미는 다음과 같습니다.

  • [INTEGER]는 테이블 파티션의 기본 수명(단위: 초)입니다. 최솟값은 없습니다. 만료 시간은 파티션의 날짜와 정수 값을 더한 값입니다. 0 또는 음수를 지정하면 파티션 만료가 제거되고 파티션이 만료되지 않습니다. 만료 시간이 없는 파티션은 수동으로 삭제해야 합니다.
  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 업데이트할 테이블이 포함되어 있는 데이터세트의 이름입니다.
  • [TABLE]은 업데이트할 테이블의 이름입니다.

예를 들면 다음과 같습니다.

mydataset.mytable의 파티션 만료 시간을 5일(432,000초)로 업데이트하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트에 있습니다.

bq update --time_partitioning_expiration 432000 mydataset.mytable

mydataset.mytable의 파티션 만료 시간을 5일(432,000초)로 업데이트하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq update --time_partitioning_expiration 432000 myotherproject:mydataset.mytable

API

tables.patch 메소드를 호출하고 timePartitioning.expirationMs 속성을 사용하여 파티션 만료 시간을 밀리초 단위로 업데이트합니다. tables.update 메소드는 전체 테이블 리소스를 대체하므로 tables.patch 메소드를 사용하는 것이 좋습니다.

스키마 정의 업데이트

파티션을 나눈 테이블의 스키마 정의를 업데이트하는 프로세스는 표준 테이블의 스키마 정의를 업데이트하는 프로세스와 동일합니다. 자세한 내용은 테이블 스키마 수정을 참조하세요.

파티션을 나눈 테이블 이름 바꾸기

현재는 기존 파티션 테이블의 이름을 변경할 수 없습니다. 테이블 이름을 변경해야 한다면 테이블 복사 단계를 따라야 합니다. 복사 작업에서 대상 테이블을 지정할 때는 새 테이블 이름을 사용해야 합니다.

파티션을 나눈 테이블 복사

한 개의 파티션을 나눈 테이블 복사

파티션을 나눈 테이블을 복사하는 프로세스는 표준 테이블을 복사하는 프로세스와 동일합니다. 자세한 내용은 테이블 복사를 참조하세요.

파티션을 나눈 테이블을 복사할 때는 다음에 유의하세요.

  • 원본과 대상 테이블은 같은 위치의 데이터세트에 있어야 합니다.

  • 파티션을 나눈 테이블을 새 파티션 대상 테이블에 복사하기
    시간으로 파티션을 나눈 테이블을 새 테이블에 복사하면 모든 파티션 나누기 정보가 테이블에 복사됩니다. 새 테이블과 이전 테이블은 동일한 파티션을 갖게 됩니다.
  • 파티션을 나누지 않는 테이블을 파티션을 나눈 테이블에 복사하기
    파티션을 나누지 않은 테이블을 파티션을 나눈 테이블에 복사하면 BigQuery는 소스 데이터를 현재 날짜가 표시된 파티션에 복사합니다.
  • 파티션을 나눈 테이블을 다른 파티션을 나눈 테이블에 복사하기
    파티션을 나눈 테이블을 다른 파티션을 나눈 테이블에 복사하려면 소스 및 대상 테이블의 파티션 사양이 일치해야 합니다. 대상 테이블에 추가할지 또는 덮어쓸지 지정할 수 있습니다.
  • 파티션을 나눈 테이블을 파티션을 나누지 않는 테이블에 복사하기
    파티션을 나눈 테이블을 파티션을 나누지 않는 테이블에 복사해도 대상 테이블의 파티션은 나눠지지 않습니다. 데이터는 설정에 따라 파티션을 나누지 않은 테이블에 추가되거나 덮어쓰는 데 사용됩니다.

여러 개의 파티션을 나눈 테이블 복사

여러 개의 파티션을 나눈 테이블을 복사하는 프로세스는 여러 개의 표준 테이블을 복사하는 프로세스와 동일합니다. 자세한 정보는 여러 개의 소스 테이블 복사를 참조하세요.

여러 개의 파티션을 나눈 테이블을 복사할 때는 다음에 유의하세요.

  • 여러 개의 소스 테이블을 같은 작업의 파티션을 나눈 테이블 하나에 복사할 때는 소스 테이블에 파티션을 나눈 테이블과 파티션을 나누지 않은 테이블이 혼재해서는 안 됩니다.
  • 모든 소스 테이블이 파티션을 나눈 테이블이라면 모든 소스 테이블의 파티션 사양이 대상 테이블의 파티션 사양과 일치해야 합니다. 설정에 따라 대상 테이블을 추가할지 또는 덮어쓸지 결정합니다.
  • 원본과 대상 테이블은 같은 위치의 데이터세트에 있어야 합니다.

파티션 복사

다음을 수행하여 하나 이상의 파티션을 복사할 수 있습니다.

현재까지 파티션 복사는 GCP Console 또는 기본 BigQuery 웹 UI에서 지원되지 않습니다.

필수 권한

데이터세트 수준에서 파티션을 복사하려면 복사할 파티션이 포함된 소스 데이터세트에 대한 READER 액세스 권한과 대상 데이터세트에 대한 WRITER 액세스 권한이 필요합니다.

데이터세트 수준의 권한을 사용하는 대신 bigquery.tables.createbigquery.tables.getData 권한을 포함하는 프로젝트 수준 IAM 역할을 활용할 수도 있습니다. 대상 테이블이 새 테이블이면 대상 데이터세트에서 파티션 복사본을 만드는 데 bigquery.tables.create 권한이 필요합니다. bigquery.tables.getData 권한은 복사하는 파티션의 데이터를 읽는 데 필요합니다.

다음 사전 정의된 프로젝트 수준 IAM 역할에는 프로젝트의 모든 데이터세트에 대한 bigquery.tables.createbigquery.tables.getData 권한이 포함됩니다.

복사 작업을 실행하려면 bigquery.jobs.create 권한도 부여받아야 합니다. 다음 사전 정의된 프로젝트 수준 IAM 역할에는 bigquery.jobs.create 권한이 포함됩니다.

또한 bigquery.user 역할에는 bigquery.datasets.create 권한이 있기 때문에 bigquery.user 역할에 할당된 사용자는 자신이 만든 모든 테이블이나 파티션의 데이터를 읽거나 복사할 수 있습니다. bigquery.user 역할에 할당된 사용자는 데이터세트를 만들 때 해당 데이터세트에 대한 OWNER 액세스 권한을 얻습니다. 데이터세트에 대한 OWNER 액세스 권한이 있는 사용자는 해당 데이터세트와 데이터세트에 포함된 모든 테이블 및 파티션을 완벽하게 제어할 수 있습니다.

BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요. 데이터세트 수준 역할에 대한 자세한 내용은 데이터세트 기본 역할을 참조하세요.

한 개의 파티션 복사

콘솔

파티션 복사는 GCP Console에서 지원되지 않습니다.

기본 UI

파티션 복사는 기본 BigQuery 웹 UI에서 지원되지 않습니다.

명령줄

파티션을 복사하려면 명령줄 도구의 bq cp(복사) 명령어를 $20160201 같은 파티션 데코레이터($[DATE])와 함께 사용합니다.

선택적 플래그를 사용하면 대상 파티션의 쓰기 처리를 제어할 수 있습니다.

  • -a 또는 --append_table은 소스 파티션의 데이터를 대상 데이터세트에 있는 기존 테이블이나 파티션에 추가합니다.
  • -f 또는 --force는 대상 데이터세트의 기존 테이블이나 파티션을 덮어쓰며 확인 메시지를 표시하지 않습니다.
  • -n 또는 --no_clobber는 테이블이나 파티션이 대상 데이터세트에 있으면 다음과 같은 오류 메시지를 반환합니다. Table '[PROJECT_ID]:[DATASET].[TABLE] or [TABLE]$[DATE]' already exists, skipping. -n을 지정하지 않으면 기본 동작으로 대상 테이블이나 파티션을 교체할지 여부를 묻는 메시지를 표시합니다.
  • --destination_kms_key는 대상 테이블이나 파티션을 암호화하는 데 사용하는 고객 관리 Cloud KMS 키입니다.

cp 명령어는 --time_partitioning_field--time_partitioning_type 플래그를 지원하지 않습니다. 복사 작업을 통해 내부 데이터화 시간으로 파티션을 나눈 테이블을 파티션을 나눈 테이블로 변환할 수는 없습니다.

--destination_kms_key는 여기서 설명하지 않습니다. 자세한 내용은 Cloud KMS 키로 데이터 보호를 참조하세요.

소스 또는 대상 데이터세트가 기본 프로젝트가 아닌 다른 프로젝트에 있다면 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터세트 이름에 추가합니다.

--location 플래그를 지정하고 값을 사용자 위치로 설정합니다.

bq --location=[LOCATION] cp -a -f -n [PROJECT_ID]:[DATASET].[SOURCE_TABLE]$[SOURCE_PARTITION] [PROJECT_ID]:[DATASET].[DESTINATION_TABLE]$[DESTINATION_PARTITION]

각 항목의 의미는 다음과 같습니다.

  • [LOCATION]은 사용자 위치의 이름입니다. --location 플래그는 선택사항입니다. 예를 들어 도쿄 지역에서 BigQuery를 사용하는 경우에는 플래그 값을 asia-northeast1로 설정할 수 있습니다. .bigqueryrc 파일을 사용하여 위치 기본값을 설정할 수 있습니다.
  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 소스 또는 대상 데이터세트의 이름입니다.
  • [SOURCE_TABLE]은 복사할 테이블입니다.
  • [SOURCE_PARTITION]은 소스 파티션의 파티션 데코레이터입니다.
  • [DESTINATION_TABLE]은 대상 데이터세트의 테이블 이름입니다.
  • [DESTINATION_PARTITION]은 대상 파티션의 파티션 데코레이터입니다.

예를 들면 다음과 같습니다.

파티션을 새 테이블에 복사

2018년 1월 30일 파티션을 mydataset.mytable에서 새 테이블인 mydataset.mytable2로 복사하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트에 있습니다. mydatasetUS 다중 지역 위치에서 생성되었습니다.

bq --location=US cp -a 'mydataset.mytable$20180130' mydataset.mytable2

파티션을 파티션을 나누지 않는 테이블에 복사

2018년 1월 30일 파티션을 mydataset.mytable에서 파티션을 나누지 않은 테이블인 mydataset2.mytable2로 복사하려면 다음 명령어를 입력합니다. -a 단축키는 파티션의 데이터를 파티션을 나누지 않은 대상 테이블에 추가하는 데 사용합니다. 두 데이터세트 모두 기본 프로젝트에 있습니다. 두 데이터세트 모두 asia-northeast1 지역에서 생성되었습니다.

bq --location=asia-northeast1 cp -a 'mydataset.mytable$20180130' mydataset2.mytable2

2018년 1월 30일 파티션을 mydataset.mytable에서 파티션을 나누지 않은 테이블인 mydataset2.mytable2로 복사하려면 다음 명령어를 입력합니다. -f 단축키는 파티션을 나누지 않은 대상 테이블을 확인 메시지 없이 덮어쓰는 데 사용합니다. 두 데이터세트 모두 기본 프로젝트에 있으며 US 다중 지역 위치에서 생성되었습니다.

bq --location=US cp -f 'mydataset.mytable$20180130' mydataset2.mytable2

파티션을 다른 파티션을 나눈 테이블에 복사

2018년 1월 30일 파티션을 mydataset.mytable에서 다른 파티션 테이블인 mydataset2.mytable2로 복사하려면 다음 명령어를 입력합니다. -a 단축키는 파티션의 데이터를 대상 테이블에 추가하는 데 사용합니다. 대상 테이블에 파티션 데코레이터가 지정되지 않았기 때문에 소스 파티션 키가 유지되고 대상 테이블의 2018년 1월 30일 파티션에 데이터가 복사됩니다. 대상 테이블에 파티션 데코레이터를 지정하여 데이터를 특정 파티션에 복사할 수도 있습니다. mydataset는 기본 프로젝트에 있습니다. mydataset2는 기본 프로젝트가 아닌 myotherproject에 있습니다. 두 데이터세트 모두 US 다중 지역 위치에서 생성되었습니다.

bq --location=US cp -a 'mydataset.mytable$20180130' myotherproject:mydataset2.mytable2

mydataset.mytable의 2018년 1월 30일 파티션을 다른 파티션을 나눈 테이블인 mydataset2.mytable2의 2018년 2월 20일 파티션에 복사하려면 다음 명령어를 입력합니다. -f 단축키는 대상 테이블의 2018년 2월 20일 파티션을 확인 메시지 없이 덮어쓰는 데 사용합니다. 파티션 데코레이터를 사용하지 않으면 대상 테이블의 모든 데이터를 덮어씁니다. mydataset는 기본 프로젝트에 있습니다. mydataset2은 기본 프로젝트가 아닌 myotherproject에 있습니다. 두 데이터세트 모두 US 다중 지역 위치에서 생성되었습니다.

bq --location=US cp -f 'mydataset.mytable$20180130' 'myotherproject:mydataset2.mytable2$20180220'

2018년 1월 30일 파티션을 mydataset.mytable에서 다른 파티션 테이블인 mydataset2.mytable2로 복사하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트에 있고, mydataset2는 기본 프로젝트가 아닌 myotherproject에 있습니다. 대상 테이블에 데이터가 있으면 기본 동작으로 덮어쓸지 여부를 묻는 메시지를 표시합니다. 두 데이터세트 모두 asia-northeast1 지역에서 생성되었습니다.

bq --location=asia-northeast1 cp 'mydataset.mytable$20180130' myotherproject:mydataset2.mytable2

API

jobs.insert 메소드를 호출하고 복사 작업을 구성합니다. 작업 리소스jobReference 섹션에서 location 속성에 리전을 지정합니다.

작업 구성에 다음 속성을 지정합니다.

  • sourceTable 속성에 소스 데이터세트, 테이블, 파티션을 입력합니다.
  • destinationTable 속성에 대상 데이터세트와 테이블을 입력합니다.
  • writeDisposition 속성을 사용하여 대상 테이블이나 파티션을 추가할지 또는 덮어쓸지 지정합니다.

여러 개의 파티션 복사

여러 개의 파티션을 복사하는 방법:

콘솔

현재까지 파티션 복사는 GCP Console에서 지원되지 않습니다.

기본 UI

현재까지 파티션 복사는 BigQuery 웹 UI에서 지원되지 않습니다.

명령줄

여러 개의 파티션 복사는 한 개의 파티션 복사와 프로세스가 동일하지만 여러 개의 소스 파티션을 쉼표로 구분한 목록으로 지정해야 합니다.

bq --location=[LOCATION] cp 'mydataset.mytable$20180130,mydataset.mytable$20180131' myotherproject:mydataset.mytable2

API

jobs.insert 메소드를 호출하고 복사 작업을 구성합니다. 작업 리소스jobReference 섹션에서 location 속성에 리전을 지정합니다.

작업 구성에 다음 속성을 지정합니다.

  • sourceTables 속성에 데이터세트와 테이블 이름을 포함한 여러 개의 소스 파티션을 입력합니다.
  • destinationTable 속성에 대상 데이터세트와 테이블을 입력합니다.
  • writeDisposition 속성을 사용하여 대상 테이블이나 파티션을 추가할지 또는 덮어쓸지 지정합니다.

파티션을 나눈 테이블 삭제

파티션을 나눈 테이블을 삭제하는 프로세스는 표준 테이블을 삭제하는 프로세스와 동일합니다. 테이블 삭제에 대한 자세한 내용은 테이블 삭제를 참조하세요.

파티션을 나눈 테이블의 파티션 삭제

명령줄 도구의 bq rm 명령어를 사용하거나 tables.delete API 메소드를 호출하여 파티션을 나눈 테이블의 파티션을 삭제할 수 있습니다. 파티션 삭제는 현재까지 BigQuery 웹 UI에서 지원되지 않습니다.

파티션 데코레이터를 사용하여 특정 파티션을 삭제할 수 있습니다. 예를 들어 mydataset.mytable이라는 이름의 파티션을 나눈 테이블에 있는 2016년 3월 1일 파티션($20160301)은 다음 명령어로 삭제할 수 있습니다.

bq rm 'mydataset.mytable$20160301'

파티션을 나눈 테이블의 파티션 목록을 검색하려면 수집 시간으로 파티션을 나눈 테이블의 파티션 나열하기파티션을 나눈 테이블의 파티션 나열하기를 참조하세요.

현재는 한 번에 하나의 파티션만 삭제할 수 있습니다.

필수 권한

파티션을 삭제하려면 데이터세트 수준의 OWNER 액세스 권한이 있거나 bigquery.tables.delete 권한을 포함하는 프로젝트 수준 IAM 역할을 할당받아야 합니다. 아래의 사전 정의된 프로젝트 수준 IAM 역할에는 bigquery.tables.delete 권한이 있습니다.

사전 정의된 프로젝트 수준 역할이 할당된 사용자는 프로젝트 내 모든 파티션을 나눈 테이블에서 파티션을 삭제할 수 있습니다. 데이터세트 수준의 OWNER 권한이 할당된 사용자는 해당 데이터세트의 테이블에 있는 파티션만 삭제할 수 있습니다.

또한 bigquery.user 역할에는 bigquery.datasets.create 권한이 있기 때문에 bigquery.user 역할에 할당된 사용자는 자신이 만든 모든 데이터세트에서 테이블과 파티션을 삭제할 수 있습니다. bigquery.user 역할에 할당된 사용자는 데이터세트를 만들 때 해당 데이터세트에 대한 OWNER 액세스 권한을 얻습니다. 데이터세트에 대한 OWNER 액세스 권한이 있는 사용자는 해당 데이터세트와 데이터세트에 포함된 모든 테이블 및 테이블 파티션을 완벽하게 제어할 수 있습니다.

BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요. 데이터세트 수준 역할에 대한 자세한 내용은 데이터세트 기본 역할을 참조하세요.

파티션을 나눈 테이블의 파티션 삭제

특수 파티션 두 개 중 하나가 아니라면 파티션의 데코레이터를 지정하여 파티션을 삭제할 수 있습니다. 현재 __NULL__이나 __UNPARTITIONED__ 파티션은 삭제할 수 없습니다.

파티션을 나눈 테이블의 파티션을 삭제하는 방법:

콘솔

파티션 삭제는 GCP Console에서 지원되지 않습니다.

기본 UI

파티션 삭제는 기본 BigQuery 웹 UI에서 지원되지 않습니다.

CLI

bq rm 명령어를 --table 플래그(또는 -t 단축키)와 함께 사용하고 파티션 데코레이터($[DATE])를 참조하여 파티션을 나눈 테이블의 특정 파티션을 삭제합니다. CLI로 파티션을 제거할 때는 작업을 확인해야 합니다. --force 플래그(또는 -f 단축키)를 사용하면 확인을 건너뛸 수 있습니다.

파티션 테이블이 기본 프로젝트가 아닌 다른 프로젝트의 데이터세트에 있다면 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터세트 이름에 추가합니다.

bq rm -f -t [PROJECT_ID]:[DATASET].[TABLE]$[DATE]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 테이블이 포함된 데이터세트의 이름입니다.
  • [TABLE]은 테이블의 이름입니다.
  • $[DATE]는 삭제하려는 파티션의 파티션 데코레이터입니다.

예를 들면 다음과 같습니다.

mydataset.mytable이라는 이름의 파티션을 나눈 테이블에 있는 2016년 3월 1일 파티션($20160301)을 삭제하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트에 있습니다.

bq rm 'mydataset.mytable$20160301'

mydataset.mytable이라는 이름의 파티션을 나눈 테이블에 있는 2017년 1월 1일 파티션($20170101)을 삭제하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq rm 'myotherproject:mydataset.mytable$20170101'

mydataset.mytable이라는 이름의 파티션을 나눈 테이블에 있는 2018년 1월 18일 파티션($20180118)을 삭제하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다. -f 단축키는 확인을 건너뛰는 데 사용합니다.

bq rm -f 'myotherproject:mydataset.mytable$20180118'

API

tables.delete 메소드를 호출하고 tableId 매개변수를 사용하여 테이블과 파티션 데코레이터를 지정합니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.