파티션을 나눈 테이블 데이터 관리

이 문서는 BigQuery에서 파티션을 나눈 테이블 데이터를 관리하는 방법을 설명합니다.

파티션 데코레이터

파티션 데코레이터를 사용하면 테이블의 파티션을 참조할 수 있습니다. 예를 들어 특정 파티션에 데이터를 쓰는 데 사용할 수 있습니다.

파티션 데코레이터는 table_name$partition_id 형식이며, 여기서 partition_id 세그먼트의 형식은 파티션 나누기 유형에 따라 다릅니다.

파티션 나누기 유형 형식 예시
매시간 yyyymmddhh my_table$2021071205
매일 yyyymmdd my_table$20210712
매월 yyyymm my_table$202107
매년 yyyy my_table$2021
정수 범위 range_start my_table$40

파티션의 데이터 탐색

지정된 파티션의 데이터를 둘러보려면 파티션 데코레이터와 함께 bq head 명령어를 사용합니다.

예를 들어 다음 명령어는 2018-02-24 파티션에서 my_dataset.my_table 처음 10개 행에 있는 모든 필드를 나열합니다.

    bq head --max_rows=10 'my_dataset.my_tablee$20180224'

특정 파티션에 데이터 쓰기

파티션 데코레이터와 함께 bq load 명령어를 사용하여 특정 파티션에 데이터를 로드할 수 있습니다. 다음 예시에서는 테이블 파티션을 이미 날짜 기준으로 나누었다고 가정하고 데이터를 기존 테이블의 20160501(2016년 5월 1일) 파티션에 씁니다.

bq load --source_format=CSV 'my_dataset.my_table$20160501' data.csv

또한 쿼리 결과를 특정 파티션에 쓸 수도 있습니다.

bq query \
  --use_legacy_sql=false  \
  --destination_table='my_table$20160501' \
  --append_table=true \
  'SELECT * FROM my_dataset.another_table'

수집 시간으로 파티션 나누기를 사용하면 이 기법으로 데이터가 원래 생성된 시간에 해당하는 이전 데이터를 파티션에 로드할 수 있습니다.

이 기법을 사용하여 시간대를 조정할 수도 있습니다. 기본적으로 수집 시간 파티션은 UTC 시간을 따릅니다. 파티션 시간을 특정 시간대와 일치시키려면 파티션 데코레이터를 사용하여 UTC 수집 시간을 상쇄하면 됩니다. 예를 들어 태평양 표준시(PST)를 사용하는 경우에는 2016년 5월 1일 PST에 생성된 데이터를 해당 파티션 데코레이터 $20160501을 사용하여 해당 날짜의 파티션에 로드할 수 있습니다.

시간 단위 열과 정수 범위로 파티션을 나눈 테이블의 경우 데코레이터에 지정된 파티션 ID가 작성 중인 데이터와 일치해야 합니다. 예를 들어 DATE 열에서 테이블 파티션을 나눈 경우 데코레이터가 해당 열의 값과 일치해야 합니다. 그렇지 않으면 오류가 발생합니다. 그러나 데이터가 단일 파티션에 있음을 미리 알고 있는 경우 파티션 데코레이터를 지정하면 쓰기 성능을 향상시킬 수 있습니다.

데이터 로드에 대한 자세한 내용은 BigQuery에 데이터 로드 소개를 참조하세요.

파티션을 나눈 테이블로 데이터 스트리밍

tabledata.insertAll 메서드를 사용하여 파티션을 나눈 테이블로 데이터를 스트리밍하는 방법은 파티션을 나눈 테이블로 스트리밍을 참조하세요.

테이블 데이터 내보내기

파티션을 나눈 테이블에서 데이터를 내보내는 방법은 파티션을 나누지 않은 테이블에서 데이터를 내보내는 방법과 동일합니다. 자세한 내용은 테이블 데이터 내보내기를 참조하세요.

개별 파티션에서 데이터를 내보내려면 테이블 이름에 파티션 데코레이터를 추가합니다. my_table$20160201).

또한 테이블 이름에 파티션 이름을 추가하여 __NULL____UNPARTITIONED__ 파티션에서 데이터를 내보낼 수 있습니다. 예를 들면 my_table$__NULL__ 또는 my_table$__UNPARTITIONED__입니다.

파티션을 나눈 테이블 보안

파티션을 나눈 테이블의 액세스 제어는 표준 테이블의 액세스 제어와 동일합니다. 자세한 내용은 테이블 액세스 제어 소개를 참조하세요.

다음 단계

파티션을 나눈 테이블 작업에 대해 자세히 알아보세요.