데이터세트 복사

데이터를 BigQuery로 추출, 이동, 다시 로드하지 않고 리전 내에서 또는 리전 간에 데이터세트를 복사할 수 있습니다. 데이터 세트를 한 번 복사하거나 맞춤설정된 반복 일정에 따라 복사할 수 있습니다.

시작하기 전에

데이터세트 사본을 생성하기 전에 다음을 수행하세요.

  • 데이터세트를 복사하는 데는 BigQuery Data Transfer Service의 기능이 사용됩니다. 대상 데이터세트의 Google Cloud 프로젝트에서 BigQuery Data Transfer Service를 사용 설정하는 데 필요한 모든 작업을 완료했는지 확인합니다.
  • 기본 BigQuery 웹 UI를 사용하여 전송할 경우 권한 창을 볼 수 있도록 브라우저에서 bigquery.cloud.google.com의 팝업을 허용합니다. 전송의 일종인 데이터세트 복사를 관리하기 위해서는 BigQuery Data Transfer Service 권한을 허용해야 합니다.
  • 소스 데이터세트와 같은 리전 또는 다른 리전에 대상 데이터세트로 BigQuery 데이터세트를 생성합니다. 데이터세트를 만들 때는 BigQuery 데이터를 저장할 위치를 지정해야 합니다. 일부 리전에서는 데이터 세트 복사가 아직 지원되지 않습니다(지원되는 리전 참조). 데이터세트 이름은 프로젝트별로 고유해야 합니다.
  • 복사하려는 소스 데이터 세트의 ID와 소스 프로젝트의 ID를 찾습니다.
  • Pub/Sub의 전송 실행 알림을 설정하려면 pubsub.topics.setIamPolicy 권한이 있어야 합니다. 이메일 알림만 설정한다면 Pub/Sub 권한이 필요하지 않습니다. 자세한 내용은 BigQuery Data Transfer Service 실행 알림을 참조하세요.
  • overwrite_destination_table 플래그를 사용하여 복사할 때 대상 테이블을 덮어쓰려면 두 테이블 모두 파티션 나누기 스키마가 동일해야 합니다.

필수 권한

데이터세트 사본을 만들기 전에 데이터세트 사본을 만드는 사람에게 다음과 같은 BigQuery 필수 권한이 있는지 확인하세요.

  1. 사본 전송을 생성하기 위한 bigquery.transfers.update 권한

  2. 소스 데이터 세트에 대한 bigquery.tables.list 권한

    다음의 사전 정의된 프로젝트 수준 IAM 역할에는 bigquery.tables.list 권한이 포함되어 있습니다.

    • bigquery.dataViewer
    • bigquery.dataEditor
    • bigquery.dataOwner
    • bigquery.metadataViewer
    • bigquery.user
  3. 대상 데이터세트에 대한 bigquery.tables.listbigquery.tables.create 권한

    다음의 사전 정의된 프로젝트 수준 IAM 역할에는 bigquery.tables.listbigquery.tables.create 권한이 포함되어 있습니다.

    • bigquery.dataEditor
    • bigquery.dataOwner
  4. 사전 정의된 프로젝트 수준 IAM 역할 bigquery.admin에는 데이터세트 복사에 필요한 모든 권한이 포함되어 있습니다. BigQuery의 IAM 역할에 대한 자세한 내용은 액세스 제어를 참조하세요.

데이터세트 사본 설정

데이터세트 사본을 생성하려면 다음 안내를 따르세요.

Console

옵션 1: 데이터 세트 복사 아이콘을 사용합니다.

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

    BigQuery 웹 UI로 이동

  2. 복사하려는 소스 데이터 세트의 데이터 세트 이름을 선택합니다.

  3. 데이터 세트 복사 아이콘을 클릭합니다.

    데이터 세트 복사 아이콘

  4. 데이터 세트 복사 대화상자에서 프로젝트 ID와 대상 데이터 세트 ID를 선택합니다. 프로젝트와 데이터 세트는 서로 다른 리전에 위치할 수 있지만 리전 간 데이터 세트 복사가 지원되지 않는 리전도 있습니다.

  5. 프로젝트 내의 데이터 세트 이름은 고유해야 합니다.

  6. 원하는 경우 대상 데이터 세트의 모든 데이터를 새로고침(덮어쓰기)하려면 대상 테이블 덮어쓰기 상자를 선택합니다. 테이블과 스키마를 모두 덮어씁니다.

    데이터 세트 복사 대화상자

  7. 추가 스토리지 비용을 방지하기 위해 이전 데이터 세트를 삭제하는 것이 좋습니다.

옵션 2: 전송 UI를 사용합니다.

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

    BigQuery 웹 UI로 이동

  2. 전송을 클릭합니다.

  3. + 전송 만들기를 클릭합니다.

  4. 전송 만들기 페이지에서 다음을 수행합니다.

    • 소스 유형 섹션의 소스에서 데이터 세트 사본을 선택합니다.

      전송 소스

    • 전송 구성 이름 섹션의 표시 이름에 전송 이름(예: My Transfer)을 입력합니다. 전송 이름은 나중에 수정해야 할 경우를 대비해 간편하게 전송을 식별할 수 있는 값이면 됩니다.

      전송 이름

    • 일정 옵션 섹션의 일정에서 기본값(지금 시작)을 유지하거나 설정 시간에 시작을 클릭합니다.

      • 반복 빈도에서 전송을 실행할 빈도 옵션을 선택합니다. 옵션은 다음과 같습니다.

        • 매일(기본값)
        • 매주
        • 매월
        • 커스텀
        • 요청 시

        매일 이외의 옵션을 선택하면 추가 옵션이 제공됩니다. 예를 들어 매주를 선택하면 요일을 선택할 수 있는 옵션이 나타납니다.

      • 시작일 및 실행 시간에 전송을 시작할 날짜와 시간을 입력합니다. 지금 시작을 선택하면 이 옵션은 사용 중지됩니다.

        전송 일정

    • 대상 데이터 세트에서 데이터를 저장하기 위해 다른 리전에 만든 데이터 세트를 선택합니다.

    • 소스 데이터 세트에 복사할 데이터 세트의 이름을 입력합니다.

    • 소스 프로젝트에 소스 데이터 세트가 있는 프로젝트의 ID를 입력합니다.

    • (선택사항) 대상 데이터 세트의 모든 데이터를 새로고침(덮어쓰기)하려면 대상 테이블 덮어쓰기 상자를 선택합니다. 테이블과 스키마를 모두 덮어씁니다.

      새 데이터 세트 사본

    • (선택사항) 알림 옵션 섹션에서 다음을 수행합니다.

      • 전환을 클릭하여 이메일 알림을 사용 설정합니다. 이 옵션을 사용 설정하면 전송 실행이 실패할 때 전송 관리자에게 이메일 알림이 발송됩니다.
      • Cloud Pub/Sub 주제 선택에서 주제 이름을 선택하거나 주제 만들기를 클릭하여 주제를 만듭니다. 이 옵션은 전송에 대한 Pub/Sub 실행 알림을 구성합니다.

      Pub/Sub 주제

  5. 저장을 클릭합니다.

  6. 추가 스토리지 비용을 방지하기 위해 이전 데이터세트를 삭제하는 것이 좋습니다.

기본 UI

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

    기본 BigQuery 웹 UI로 이동

  2. 전송을 클릭합니다.

  3. 전송 추가를 클릭합니다.

  4. 새 전송 페이지:

    • 소스에서 데이터세트 사본을 선택합니다.
    • 표시 이름에 전송 이름(예: My Dataset Copy)을 입력합니다. 표시 이름은 나중에 수정해야 할 경우를 대비해 전송을 간편하게 식별할 수 있는 값이면 됩니다.
    • (선택사항) 일정의 경우 기본값인 매일(만든 시간을 기준으로 24시간마다)을 그대로 두거나 수정을 클릭하여 시간을 변경합니다. 간격을 매주, 매월, 커스텀으로 변경할 수도 있습니다. 커스텀을 선택할 경우 크론과 유사한 시간 지정이 필요합니다(예: every 12 hours). 지정할 수 있는 최단 시간은 12시간입니다.

    • 대상 데이터세트에서 적절한 데이터세트를 선택합니다.

    • 소스 데이터세트에 소스 데이터세트의 이름을 입력합니다.

    • 소스 프로젝트에서 소스 데이터 세트가 있는 프로젝트를 선택합니다.

      새 데이터 세트 사본

    • (선택사항) 고급 섹션을 펼쳐서 전송 실행 알림을 구성합니다.

    • Cloud Pub/Sub 주제에 Cloud Pub/Sub 주제를 입력합니다(예: projects/myproject/topics/mytopic).

    • 전송 실행 실패 시 이메일 알림을 허용하려면 이메일 알림 전송을 선택합니다.

      Pub/Sub 주제

  5. 추가를 클릭합니다.

  6. 추가 스토리지 비용을 방지하기 위해 이전 데이터 세트를 삭제하는 것이 좋습니다.

bq

bq mk 명령어를 입력하고 전송 생성 플래그 --transfer_config를 지정합니다. 다음 플래그도 필요합니다.

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --target_dataset=DATASET --display_name=NAME --params='PARAMETERS'
    

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다. --project_id를 지정하지 않으면 기본 프로젝트가 사용됩니다.
  • DATA_SOURCE: 데이터 소스: cross_region_copy입니다.
  • DATASET: 전송 구성을 위한 BigQuery 대상 데이터 세트입니다.
  • NAME: 복사 작업 또는 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우를 대비해 간편하게 전송을 식별할 수 있는 값이면 됩니다.
  • PARAMETERS: JSON 형식으로 생성된 전송 구성의 매개변수가 있습니다. 예를 들면 --params='{"param":"param_value"}'입니다. 데이터 세트 복사를 위해서는 source_dataset_idsource_project_id를 제공해야 하며, 필요에 따라 overwrite_destination_table 매개변수도 제공할 수 있습니다.

데이터 세트 사본 구성 매개변수는 다음과 같습니다.

  • source_dataset_id: 복사할 소스 데이터 세트의 ID입니다.
  • source_project_id: 소스 데이터 세트가 포함된 프로젝트의 ID입니다.
  • (선택사항) overwrite_destination_table: 이전 사본의 테이블을 자르고 모든 데이터를 새로 고치려면 이 매개 변수를 포함합니다.

예를 들어 다음 명령어는 mydataset라는 대상 데이터 세트와 ID가 myproject인 프로젝트를 사용하여 My Transfer라는 데이터 세트 사본 구성을 만듭니다.

bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'

API

projects.locations.transferConfigs.create 메서드를 사용하고 TransferConfig 리소스의 인스턴스를 지정합니다.

데이터세트 사본 작업 보기 및 새로고침

전송 아래에서 데이터세트 사본의 진행 상황과 세부정보를 볼 수 있습니다.

Console

Console의 전송 버튼

Console의 전송 세부정보 보기

데이터 세트 사본 새로고침 실행은 지정하는 일정에 따라 실행되도록 예약되며, 이 일정은 구성 가능합니다. 기본값은 매 24시간입니다. 즉시 실행을 위한 새 실행을 요청하려면 더보기 메뉴를 클릭한 다음 지금 새로고침을 클릭합니다.

데이터 세트 사본 새로고침 버튼

기본 UI

기본 UI의 전송 버튼

데이터 세트 사본 새로고침 실행은 지정하는 일정에 따라 실행되도록 예약되며, 이 일정은 구성 가능합니다. 기본값은 매 24시간입니다. 즉시 실행을 위한 새 실행을 요청하려면 지금 새로고침을 클릭합니다.

데이터 세트 사본 새로고침 버튼

가격 책정

베타 기간 동안에는 데이터세트 복사에 요금이 청구되지 않습니다.

일반 안정화 버전에서는 리전 간 복사되는 요금이 청구되며 요율은 리전 간 Compute Engine 네트워크 이그레스 가격과 동일합니다.

BigQuery는 리전 간 복사에서 압축된 데이터를 전송하므로 청구되는 GB는 데이터 세트의 크기보다 작을 수 있습니다.

할당량 및 제한사항

BigQuery의 데이터세트 복사에는 다음 한도가 적용됩니다. 이 제한사항은 bq 명령줄 도구, 콘솔 또는 기본 BigQuery 웹 UI를 사용하여 만든 복사 작업에 적용됩니다. 또한 copy-type jobs.insert API 메서드를 사용하여 프로그래매틱 방식으로 제출되는 복사 작업에도 이 한도가 적용됩니다.

복사된 데이터에는 스토리지 및 쿼리에 대한 모든 표준 BigQuery 사용량 요금이 적용됩니다. 자세한 내용은 BigQuery 가격 책정을 참조하세요.

BigQuery 데이터세트 복사에는 다음 제한이 적용됩니다.

할당량

리전 내

같은 리전 내에서 데이터세트를 복사할 때는 모든 BigQuery 복사 작업과 동일한 할당량이 적용됩니다.

BigQuery에서 테이블 복사 시 다음 한도가 적용됩니다. 이 한도는 명령줄 도구, Console 또는 기본 BigQuery 웹 UI에서 데이터 복사를 통해 자동 생성되는 작업에 적용됩니다. 또한 copy-type jobs.insert API 메서드를 사용하여 프로그래매틱 방식으로 제출된 복사 작업에도 이 한도가 적용됩니다.

  • 대상 테이블당 일일 복사 작업 — 1,000개(실패 포함)
  • 프로젝트당 일일 복사 작업 — 100,000개(실패 포함)

리전 간

  • 대상 테이블당 일일 복사 작업: 100개(실패 포함)
  • 프로젝트당 일일 복사 작업: 2,000개(실패 포함)

일반 제한

  • 데이터세트 복사를 위한 전송 구성을 만들려면 먼저 대상 데이터세트를 만들어야 합니다.

  • 각 데이터 세트 사본 구성에서 활성화된 사본은 한 번에 하나만 존재할 수 있습니다. 추가 전송 실행이 대기열에 추가됩니다.

데이터 유형 제한사항

  • 뷰 복사는 지원되지 않습니다.
  • 외부 테이블 복사는 지원되지 않습니다.
  • 스트리밍 버퍼의 스토리지 복사는 지원되지 않습니다.
  • 고객 관리 키로 암호화된 테이블의 복사에 대한 지원은 같은 리전에서 복사하는지 리전 간에 복사하는지에 따라 다릅니다.

리전 내

암호화된 테이블(고객 관리 키(CMEK)로 암호화된 테이블 포함)의 복사는 같은 리전 내에서 데이터세트를 복사할 경우에 지원됩니다.

리전 간

기본 암호화가 적용된 테이블의 리전 간 복사는 지원됩니다. 고객 관리 키(CMEK)로 암호화된 테이블의 리전 간 복사는 현재 지원되지 않습니다. 대상 데이터 세트에 테이블을 복사할 때 CMEK로 암호화된 테이블은 건너뜁니다.

소스 데이터 세트 제한사항

소스 데이터세트의 최대 크기는 테이블 20,000개입니다. 각 실행당 복사 가능한 테이블의 수는 같은 리전에서 복사하는지, 리전 간에 복사하는지에 따라 다릅니다.

리전 내

  • 소스 데이터세트는 최대 20,000개의 테이블을 포함할 수 있습니다.

  • 실행당 최대 20,000개의 테이블을 대상 데이터세트로 복사할 수 있습니다.

리전 간

  • 소스 데이터세트는 최대 20,000개의 테이블을 포함할 수 있습니다.

  • 실행당 최대 1,000개의 테이블을 대상 데이터세트로 복사할 수 있습니다.

예시

테이블 8,000개가 포함된 데이터 세트의 리전 간 복사를 구성하는 경우 BigQuery Data Transfer Service는 자동으로 8개의 실행을 순차적으로 생성합니다. 첫 번째 실행에서 1,000개의 테이블이 복사되고, 24시간 후에 다른 실행에서 1,000개의 테이블이 복사되는 방식으로 데이터 세트당 최대 20,000개의 테이블까지 데이터 세트의 모든 테이블이 복사됩니다.

테이블 제한사항

  • 파티션을 나눈 테이블 복사는 현재 지원됩니다. 그러나 파티션을 나눈 테이블에 데이터 추가하기는 지원되지 않습니다.

  • 테이블이 소스 데이터 세트와 대상 데이터 세트에 있고 마지막 성공적인 복사 후에도 변경되지 않으면 해당 테이블은 건너뜁니다. 대상 테이블 덮어쓰기 체크박스가 선택된 경우라도 마찬가지입니다.

  • 테이블을 자를 때 데이터 세트 복사는 복사를 시작하기 전에 대상 데이터 세트에서 실행된 변경을 감지하지 않습니다. 대상 데이터 세트의 모든 데이터가 새로 고쳐집니다(덮어쓰기). 테이블과 스키마를 모두 덮어씁니다.

    • overwrite_destination_table 플래그를 사용하여 복사할 때 대상 테이블을 덮어쓰려면 두 테이블 모두 파티션 나누기 스키마가 동일해야 합니다.

지원되는 리전

다음과 같은 두 가지 유형의 위치가 있습니다.

  • 리전은 특정한 지리적 장소(예: 런던)입니다.

  • 멀티 리전은 두 개 이상의 지리적 장소를 포함하는 넓은 지리적 지역(예: 미국)입니다.

리전 간에, 단일 리전에서 멀티 리전으로, 멀티 리전에서 단일 리전으로 또는 멀티 리전에서 멀티 리전으로 데이터세트를 복사할 수 있습니다.

현재 일부 리전에서는 데이터세트 복사가 지원되지 않습니다. 아래와 같이 현재 BigQuery Data Transfer Service가 지원되는 리전에서 데이터세트 사본을 생성할 수 있습니다.

리전 위치

리전 설명 리전 이름
미주
라스베이거스 us-west4
북 버지니아 us-east4
솔트레이크시티 us-west3
유럽
핀란드 europe-north1
런던 europe-west2
취리히 europe-west6
아시아 태평양
자카르타 asia-southeast2
싱가포르 asia-southeast1
시드니 australia-southeast1
타이완 asia-east1
도쿄 asia-northeast1

멀티 리전 위치

멀티 리전 설명 멀티 리전 이름
유럽 연합 회원국의 데이터 센터1 EU
미국의 데이터 센터 US

1 EU 멀티 리전에 있는 데이터는 europe-west2(런던) 또는 europe-west6(취리히) 데이터 센터에 저장되지 않습니다.

다음 단계

  • 전송 구성 정보 가져오기, 전송 구성 나열, 전송 실행 기록 보기를 포함한 전송 사용에 대한 정보는 전송 작업을 참조하세요.