예약 할당 작업

BigQuery Reservation API를 사용하면 전용 슬롯(약정)을 구입하고, 슬롯 풀(예약)을 만들고, 이러한 예약에 프로젝트, 폴더, 조직을 할당할 수 있습니다.

예약 할당 만들기

구매한 슬롯을 사용하려면 프로젝트, 폴더 또는 조직을 슬롯 예약에 할당하는 할당을 만듭니다.

프로젝트는 할당된 리소스 계층 구조에서 가장 구체적인 단일 예약을 사용합니다. 폴더 할당은 조직 할당을 재정의하고 프로젝트 할당은 폴더 할당을 재정의합니다. Standard 버전 예약에서는 폴더 및 조직 할당을 사용할 수 없습니다.

예약에 할당을 생성하려면 예약이 다음 기준 중 하나 이상을 충족해야 합니다.

  • 0이 아닌 할당된 기준 슬롯으로 구성됩니다.

  • 0이 아닌 자동 확장 슬롯으로 구성됩니다.

  • 유휴 슬롯을 사용하도록 구성되며 프로젝트 내에 사용 가능한 유휴 슬롯이 있습니다.

이러한 기준 중 하나 이상을 충족하지 않는 예약에 리소스를 할당하려고 시도하면 Assignment is pending, your project will be executed as on-demand. 메시지가 표시됩니다.

장애 조치 예약에 리소스를 할당할 수 있지만 할당이 보조 위치에서 대기합니다.

필수 권한

예약 할당을 만들려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • 관리 프로젝트 및 할당된 담당자에 대한 bigquery.reservationAssignments.create 권한

사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.

예약에 조직 할당

Console

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 예약 탭을 클릭합니다.

  4. 예약 표에서 예약 찾기

  5. 작업 옵션을 확장합니다.

  6. 할당 만들기를 클릭합니다.

  7. 할당 만들기 섹션에서 찾아보기를 클릭합니다.

  8. 조직을 찾아보거나 검색하고 선택합니다.

  9. 작업 유형 섹션에서 이 예약에 할당할 작업 유형을 선택합니다. 옵션은 다음과 같습니다.

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    작업 유형에 대한 자세한 내용은 예약 할당을 참조하세요. 이 기본값은 QUERY입니다.

  10. 만들기를 클릭합니다.

SQL

조직을 예약에 할당 삭제하려면 CREATE ASSIGNMENT DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS (
      assignee = 'organizations/ORGANIZATION_ID',
      job_type = 'JOB_TYPE');
    

    다음을 바꿉니다.

    • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 관리 프로젝트의 프로젝트 ID입니다.
    • LOCATION: 예약 위치입니다.
    • RESERVATION_NAME: 예약 이름입니다.
    • ASSIGNMENT_ID: 할당 ID입니다.

      ID는 프로젝트 및 위치에 고유해야 하고, 소문자 또는 숫자로 시작하고 끝나야 하고, 소문자, 숫자, 대시만 포함해야 합니다.

    • ORGANIZATION_ID: 조직 ID
    • JOB_TYPE: QUERY, PIPELINE, BACKGROUND, ML_EXTERNAL와 같이 이 예약에 할당할 작업 유형입니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

조직의 작업을 예약에 할당하려면 bq mk 명령어를 --reservation_assignment 플래그와 함께 사용합니다.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=ORGANIZATION_ID \
    --job_type=JOB_TYPE \
    --assignee_type=ORGANIZATION

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 관리 프로젝트의 프로젝트 ID입니다.
  • LOCATION: 예약 위치입니다.
  • RESERVATION_NAME: 예약 이름입니다.
  • ORGANIZATION_ID: 조직 ID입니다.
  • JOB_TYPE: QUERY, PIPELINE, BACKGROUND, ML_EXTERNAL와 같이 이 예약에 할당할 작업 유형입니다.

예약 할당을 만들 때는 쿼리를 실행하기 전 최소 5분 이상 기다립니다. 그렇지 않으면 주문형 가격 책정을 사용하여 쿼리가 청구될 수 있습니다.

예약에 프로젝트 또는 폴더 할당

Console

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 예약 탭을 클릭합니다.

  4. 예약 표에서 예약을 찾습니다.

  5. 작업 옵션을 확장합니다.

  6. 할당 만들기를 클릭합니다.

  7. 할당 만들기 섹션에서 찾아보기를 클릭합니다.

  8. 프로젝트 또는 폴더를 찾아보거나 검색하고 선택합니다.

  9. 작업 유형 섹션에서 이 예약에 할당할 작업 유형을 선택합니다. 옵션은 다음과 같습니다.

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    작업 유형에 대한 자세한 내용은 예약 할당을 참조하세요. 이 기본값은 QUERY입니다.

  10. 만들기를 클릭합니다.

SQL

예약에 프로젝트를 할당하려면 CREATE ASSIGNMENT DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");
    

    다음을 바꿉니다.

    • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 관리 프로젝트의 프로젝트 ID입니다.
    • LOCATION: 예약 위치입니다.
    • RESERVATION_NAME: 예약 이름입니다.
    • ASSIGNMENT_ID: 할당 ID입니다.

      ID는 프로젝트 및 위치에 고유해야 하고, 소문자 또는 숫자로 시작하고 끝나야 하고, 소문자, 숫자, 대시만 포함해야 합니다.

    • PROJECT_ID: 예약에 할당할 프로젝트의 ID입니다.
    • JOB_TYPE: QUERY, PIPELINE, BACKGROUND, ML_EXTERNAL와 같이 이 예약에 할당할 작업 유형입니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

작업을 예약에 할당하려면 bq mk 명령어를 --reservation_assignment 플래그와 함께 사용합니다.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --job_type=JOB_TYPE \
    --assignee_type=PROJECT

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 관리 프로젝트의 프로젝트 ID입니다.
  • LOCATION: 예약 위치입니다.
  • RESERVATION_NAME: 예약 이름입니다.
  • PROJECT_ID: 이 예약에 할당할 프로젝트의 ID입니다.
  • JOB_TYPE: QUERY, PIPELINE, BACKGROUND, ML_EXTERNAL와 같이 이 예약에 할당할 작업 유형입니다.

예약 할당을 만들 때는 쿼리를 실행하기 전 최소 5분 이상 기다립니다. 그렇지 않으면 주문형 가격 책정을 사용하여 쿼리가 청구될 수 있습니다.

유휴 슬롯만 사용하는 프로젝트를 만들려면 0 슬롯이 할당된 예약을 만들고 이전 단계를 따라 프로젝트를 예약에 할당합니다.

none에 프로젝트 할당

none 할당은 할당이 없음을 나타냅니다. none에 할당된 프로젝트는 주문형 가격 책정을 사용합니다.

SQL

none에 프로젝트를 할당하려면 CREATE ASSIGNMENT DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");
    

    다음을 바꿉니다.

    • LOCATION: 주문형 가격 책정을 사용하는 작업의 위치입니다.
    • ASSIGNMENT_ID: 할당 ID입니다.

      ID는 프로젝트 및 위치에 고유해야 하고, 소문자 또는 숫자로 시작하고 끝나야 하고, 소문자, 숫자, 대시만 포함해야 합니다.

    • PROJECT_ID: 예약에 할당할 프로젝트의 ID입니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

프로젝트를 none에 할당하려면 bq mk 명령어를 --reservation_assignment 플래그와 함께 사용합니다.

bq mk \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=none \
    --job_type=QUERY \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

다음을 바꿉니다.

  • LOCATION: 주문형 가격 책정을 사용하는 작업의 위치입니다.
  • PROJECT_ID: none에 할당할 프로젝트의 ID입니다.

BigQuery ML 워크로드에 슬롯 할당

다음 BigQuery ML 모델 유형은 외부 서비스를 사용합니다.

ML_EXTERNAL 할당 유형을 사용하여 이러한 서비스를 사용하는 쿼리에 예약된 슬롯을 할당할 수 있습니다. ML_EXTERNAL 할당 유형이 없으면 쿼리 작업이 주문형으로 실행됩니다.

bq mk 명령어를 --reservation_assignment 플래그와 함께 사용하고 --job_type 플래그를 ML_EXTERNAL로 설정합니다.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --job_type=ML_EXTERNAL\
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 프로젝트의 ID입니다.
  • LOCATION: 예약 위치입니다.
  • RESERVATION_NAME: 예약 이름입니다.
  • PROJECT_ID: 이 예약에 할당할 프로젝트의 ID입니다.

예약 할당 찾기

필수 권한

특정 프로젝트, 폴더 또는 조직의 예약 할당을 검색하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • 관리 프로젝트에 대한 bigquery.reservationAssignments.list

사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.

프로젝트의 예약 할당 찾기

다음을 수행하면 프로젝트, 폴더 또는 조직이 예약에 할당되었는지 확인할 수 있습니다.

Console

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 예약 탭을 클릭합니다.

  4. 예약 표에서 예약을 확장하여 해당 예약에 할당된 리소스를 확인하거나 필터 필드를 사용하여 리소스 이름으로 필터링합니다.

SQL

프로젝트의 쿼리 작업이 할당된 예약을 찾으려면 INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT 보기를 쿼리합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

      SELECT
        assignment_id
      FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
      WHERE
        assignee_id = 'PROJECT_ID'
        AND job_type = 'JOB_TYPE';
    

    다음을 바꿉니다.

    • LOCATION: 확인할 예약의 위치입니다.
    • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 관리 프로젝트의 프로젝트 ID입니다.
    • PROJECT_ID: 예약에 할당할 프로젝트의 ID입니다.
    • JOB_TYPE: QUERY, PIPELINE, BACKGROUND, ML_EXTERNAL와 같이 이 예약에 할당할 작업 유형입니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

프로젝트의 쿼리 작업이 할당된 예약을 찾으려면 bq show 명령어를 --reservation_assignment 플래그와 함께 사용합니다.

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 프로젝트의 ID입니다.
  • LOCATION: 확인할 예약의 위치입니다.
  • JOB_TYPE: QUERY, PIPELINE, BACKGROUND, ML_EXTERNAL와 같이 이 예약에 할당할 작업 유형입니다.
  • PROJECT_ID: 프로젝트 ID입니다.

예약 할당 업데이트

다른 예약으로 할당 이동

한 예약에서 다른 예약으로 할당을 이동할 수 있습니다.

예약 할당을 이동하려면 관리 프로젝트 및 할당된 담당자에 대한 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • bigquery.reservationAssignments.create
  • bigquery.reservationAssignments.delete

다음과 같은 사전 정의된 IAM 역할에는 이러한 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

BigQuery에서 IAM 역할에 대한 상세 설명은 사전 정의된 역할 및 권한을 참조하세요.

할당을 이동하려면 bq update 명령어를 사용합니다.

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --destination_reservation_id=DESTINATION_RESERVATION \
    ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 프로젝트의 ID입니다.
  • LOCATION: 새 예약의 위치입니다.
  • RESERVATION_NAME: 할당을 이동할 원본 예약입니다.
  • DESTINATION_RESERVATION: 할당을 이동할 예약입니다.
  • ASSIGNMENT_ID: 할당 ID입니다.

    할당 ID를 가져오려면 프로젝트의 예약 할당 나열을 참조하세요.

예약 할당 삭제

예약 할당을 삭제하여 예약에서 프로젝트를 삭제할 수 있습니다. 프로젝트가 어떤 예약에도 할당되지 않은 경우 상위 폴더 또는 조직에서 모든 할당을 상속하거나, 상위 할당이 없는 경우 주문형 가격 책정을 사용합니다.

예약 할당을 삭제하면 해당 예약의 슬롯으로 실행 중인 작업이 완료될 때까지 계속 실행됩니다.

필수 권한

예약 할당을 삭제하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • 관리 프로젝트 및 할당된 담당자에 대한 bigquery.reservationAssignments.delete 권한

사전 정의된 다음의 각 IAM 역할에는 이 권한이 포함되어 있습니다.

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

예약에서 프로젝트 삭제

프로젝트를 예약에서 삭제하려면 다음 단계를 따르세요.

Console

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색 패널에서 용량 관리 섹션으로 이동합니다.

  3. 예약 탭을 클릭합니다.

  4. 예약 표에서 예약을 확장하여 프로젝트를 찾습니다.

  5. 작업 옵션을 확장합니다.

  6. 삭제를 클릭합니다.

SQL

DROP ASSIGNMENT DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    DROP ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
    

    다음을 바꿉니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

예약에서 프로젝트를 삭제하려면 bq rm 명령어를 --reservation_assignment 플래그와 함께 실행합니다.

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID

다음을 바꿉니다.

  • ADMIN_PROJECT_ID: 예약 리소스를 소유하는 프로젝트의 ID입니다.
  • LOCATION: 예약 위치입니다.
  • RESERVATION_NAME: 예약 이름입니다.
  • ASSIGNMENT_ID: 할당 ID입니다.

    할당 ID를 가져오려면 프로젝트의 예약 할당 찾기를 참조하세요.