予約割り当てを操作する

BigQuery Reservation API を使用すると、専用スロットを購入し(コミットメントと呼ぶ)、スロットのプールを作成し(予約と呼ぶ)、それらの予約にプロジェクト、フォルダ、組織を割り当てることができます。

予約割り当ての作成

購入したスロットを使用するには、割り当てを作成して、プロジェクト、フォルダ、または組織をスロット予約に割り当てます。

プロジェクトは、割り当てられているリソース階層内で最も明確な単一の予約を使用します。フォルダの割り当ては組織の割り当てをオーバーライドし、プロジェクトの割り当てはフォルダの割り当てをオーバーライドします。フォルダと組織の割り当ては、標準エディションの予約では使用できません。

必要な権限

予約割り当てを作成するには、次の Identity and Access Management(IAM)権限が必要です。

この権限は、次の各 IAM 事前定義ロールに含まれています。

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。

組織を予約に割り当てる

コンソール

  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: この予約に割り当てるジョブの種類QUERYPIPELINEBACKGROUNDML_EXTERNAL など)

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

組織のジョブを予約に割り当てるには、--reservation_assignment フラグを指定して bq mk コマンドを使用します。

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

次のように置き換えます。

予約割り当てを作成する場合は、5 分以上待ってからクエリを実行してください。そうしない場合、クエリはオンデマンド料金で課金される可能性があります。

プロジェクトまたはフォルダを予約に割り当てる

コンソール

  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: この予約に割り当てるジョブの種類QUERYPIPELINEBACKGROUNDML_EXTERNAL など)

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

予約にジョブを割り当てるには、--reservation_assignment フラグを指定して bq mk コマンドを使用します。

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: この予約に割り当てるジョブの種類QUERYPIPELINEBACKGROUNDML_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 に割り当てるには、--reservation_assignment フラグを指定して bq mk コマンドを使用します。

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 割り当てタイプが見つからない場合、クエリジョブはオンデマンドとして実行されます。

--reservation_assignment フラグを指定して bq mk コマンドを使用し、--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 のロールの詳細については、事前定義ロールと権限をご覧ください。

プロジェクトの予約割り当てを検索する

プロジェクト、フォルダ、組織が予約に割り当てられているかどうかは、次の手順で確認できます。

コンソール

  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: この予約に割り当てるジョブの種類QUERYPIPELINEBACKGROUNDML_EXTERNAL など)

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

プロジェクトのクエリジョブがどの予約に割り当てられているかを確認するには、--reservation_assignment フラグを指定して bq show コマンドを使用します。

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: この予約に割り当てるジョブの種類QUERYPIPELINEBACKGROUNDML_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)権限が必要です。

この権限は、次の各 IAM 事前定義ロールに含まれています。

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

プロジェクトを予約から削除する

予約からプロジェクトを削除するには:

コンソール

  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

予約からプロジェクトを削除するには、--reservation_assignment フラグを指定して bq rm コマンドを使用します。

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

次のように置き換えます。