데이터세트 복사

데이터를 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 실행 알림을 참조하세요.

필수 권한

데이터세트 사본을 만들기 전에 데이터세트 사본을 만드는 사람에게 다음과 같은 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).

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

      Cloud Pub/Sub 주제

  5. 추가를 클릭합니다.

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

CLI

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)입니다.
  • --target_dataset는 전송 구성을 위한 BigQuery 대상 데이터세트입니다.
  • --display_name은 복사 작업 또는 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 쉽게 식별할 수 있는 값이면 됩니다.
  • --params에는 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에서 데이터세트 복사 시 다음 한도가 적용됩니다. 이 한도는 명령줄 도구(CLI), Console 또는 기본 BigQuery 웹 UI를 사용하여 만드는 복사 작업에 적용됩니다. 또한 copy-type jobs.insert API 메서드를 사용하여 프로그래매틱 방식으로 제출되는 복사 작업에도 이 한도가 적용됩니다.

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

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

할당량

리전 내

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

BigQuery에서 테이블 복사 시 다음 한도가 적용됩니다. 이 한도는 명령줄 도구(CLI), 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개의 테이블까지 데이터세트의 모든 테이블이 복사됩니다.

테이블 제한사항

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

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

  • 테이블을 자를 때 데이터세트 복사는 복사를 시작하기 전에 대상 데이터세트에서 실행된 변경을 감지하지 않습니다. 대상 데이터세트의 모든 데이터가 갱신됩니다(덮어씀). 이 경우 테이블과 스키마를 둘 다 덮어씁니다.

위치 제한사항

리전 간에, 한 리전에서 여러 리전으로, 여러 리전에서 한 리전으로, 여러 리전에서 여러 리전으로 데이터세트를 복사할 수 있습니다.

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

리전 위치

리전 이름 리전 설명
유럽
europe-west2 런던
아시아 태평양
asia-northeast1 도쿄
asia-southeast1 싱가포르
australia-southeast1 시드니

다중 지역 위치

다중 리전 이름 다중 리전 설명
EU 유럽 연합1
US 미국

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

다음 단계

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