Reservations を操作する

このページでは、BigQuery Reservations を使用して一般的なタスクを実行する方法を説明します。

Reservations API を使用すると、専用スロット(コミットメントと呼ばれる)を購入し、スロットのプール(予約と呼ばれる)を作成して、プロジェクトと組織をそれらの予約に割り当てることができます。これらのコンセプトの詳細については、Reservations の概要をご覧ください。

コミットメントを操作する

スロットの購入

コミットメントは、リージョン リソースです。あるリージョンで購入したコミットメントを他のリージョンで使用することや、コミットメントをリージョン間で移動することはできません。

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. ナビゲーション パネルで、[予約] セクションに移動します。 Reservations のナビゲーション ボタン。

  3. [スロットの購入] ボタンをクリックします。 スロットを購入します。

  4. コミットメントの期間を選択します。 月単位を選択します。

  5. 購入しようとするスロットに組織全体を割り当てる場合は、[デフォルトの組織を定額料金にする] を有効にします。必要に応じてこのオプションを無効にして、予約への組織の割り当てセクションに示すように、個別のプロジェクトを割り当てることができます。

  6. ロケーションを選択します。

  7. スロットの数を入力します。

  8. 注文を確認し、「CONFIRM」と入力して注文を確定します。購入を完了するには、[PURCHASE] を選択します。確認用の入力を行います。

  9. 容量がプロビジョニングされると、リクエストされた容量コミットメントのステータスが緑色になります。スロットのコミットメント。

初めて容量を購入する場合は、default 予約が作成されます。

bq

スロットを購入するには、--capacity_commitment フラグを指定して bq mk コマンドを使用します。

bq mk \
  --project_id=ADMIN_PROJECT_ID \
  --location=LOCATION \
  --capacity_commitment \
  --plan=PLAN_TYPE \
  --slots=NUMBER_OF_SLOTS

ここで

  • ADMIN_PROJECT_ID は、このコミットメントのオーナー権限を保持する管理プロジェクトのプロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • PLAN_TYPE は、プランの種類です。FLEXMONTHLYANNUAL のいずれかです。
  • NUMBER_OF_SLOTS は、購入するスロットの数です。

購入したコミットメントを表示する

プロジェクトごとに容量コミットメントを表示するには:

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [Slot commitments] タブをクリックします。

    スロットのコミットメント。

bq

--capacity_commitment フラグを指定した bq ls コマンドを使用して、管理プロジェクトのコミットメントを一覧表示します。

bq ls \
 --capacity_commitment \
 --location=LOCATION \
 --project_id=ADMIN_PROJECT_ID

ここで

  • LOCATION は、プロジェクトのロケーションです。
  • ADMIN_PROJECT_ID は、プロジェクト ID です。

コミットメントを更新する

コミットメント更新プランのオプションは、コミットメント終了日より前に選択できます。

Console

新しいコミットメント

更新プランのオプションは、コミットメントの作成時に選択できます。

既存のコミットメント

既存の年単位コミットメントの更新プランの選択を変更できます。

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [Slot commitments] タブをクリックします。

  4. 編集するコミットメントに対して、[アクション] をクリックし、[編集] をクリックします。

bq

既存のコミットメントの更新プランを変更するには、--renewal_plan オプション付きで bq update コマンドを使用します。

bq update \
  --project_id=ADMIN_PROJECT_ID \
  --location=LOCATION \
  --renewal_plan=PLAN_TYPE \
  --capacity_commitment COMMITMENT_ID

ここで

コミットメントをより長い期間に変換する

コミットメントはいつでも、長期契約コミットメント タイプに変換できます。

  • Flex Slots は、月単位または年単位のコミットメントに変換できます。
  • 月単位のコミットメントは、年単位のコミットメントに変換できます。

bq

コミットメントを変換するには、--renewal_plan オプション付きで bq update コマンドを使用します。コミットメントを更新するとすぐに、新しいプランに関連付けられたレートが課金され、終了日が再設定されます。

bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--plan=PLAN_TYPE \
--renewal_plan=RENEWAL_PLAN \
--capacity_commitment COMMITMENT_ID

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • PLAN_TYPE は、新しいプランの種類です。FLEXMONTHLYANNUAL のいずれかです。
  • RENEWAL_PLAN は、更新プランの種類です。
  • COMMITMENT_ID は、コミットメントの ID です。ID を取得するには、購入したコミットメントを表示するをご覧ください。

コミットメントを分割する

自身のコミットメントを、同じプランで同じコミットメント終了日の 2 つのコミットメントに分割できます。これは、コミットメントの一部を更新する必要がある場合に有用な可能性があります。たとえば、年定額契約のコミットメント 1,000 スロットがある場合、このコミットメントを分割して、年定額契約で 500 スロットを更新し、さらに終了日後に 500 スロットを Flex Slots のスロットに変換できます。

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [Slot commitments] タブをクリックします。

  4. 分割するコミットメントを選択します。

  5. [スプリット] をクリックします。

  6. [Split commitment] ページで、[Configure split] スライダーを使用して、各スプリットに含めるスロットの数を 100 単位で増やします。

  7. [スプリット] をクリックして、コミットメントを分割します。新しいコミットメントが [Slot commitments] タブに表示されます。

bq

コミットメントを分割するには、bq コマンドライン ツールを使用します。

bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--split \
--slots=SLOTS_TO_SPLIT \
--capacity_commitment COMMITMENT_ID

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • SLOTS_TO_SPLIT は、元のコミットメントから新しいコミットメントに分割するスロットの数です。
  • COMMITMENT_ID は、コミットメントの ID です。ID を取得するには、購入したコミットメントを表示するをご覧ください。

2 つのコミットメントを統合する

同じプランの複数のコミットメントを、1 つのコミットメントに統合できます。統合されたコミットメントの終了日は、元のコミットメントの終了日のうちの最も遅い終了日です。終了日が他のコミットメントの終了日より早い場合、そのコミットメントは遅い終了日に変更されます。これらのスロットに対しては比例配分された料金が請求されます。

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [Slot commitments] タブをクリックします。

  4. 統合するコミットメントを選択します。

  5. [Merge] をクリックします。

  6. [Merge commitment] ページで、マージの詳細を確認して、[Merge] をクリックします。新しいマージされたコミットメントが [Slot commitments] タブに表示されます。

bq

コミットメントを統合するには、bq コマンドライン ツールを使用します。次のコマンドは、2 つのコミットメントを 1 つのコミットメントに統合します。

bq update \
--project_id=ADMIN_PROJECT_ID \
--location=US \
--merge \
--capacity_commitment COMMITMENT1,COMMITMENT2

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • COMMITMENT1 は、最初に統合するコミットメントです。
  • COMMITMENT2 は、2 番目に統合するコミットメントです。

コミットメントを削除する

容量コミットメントは、コミットメント期間に基づいて削除できます。

コミットメントの終了日は Cloud Console に表示されます。容量コミットメントは、終了日の後に削除できるようになります。まず、割り当てられていないスロットが十分にあることを確認します。十分でない場合は、予約のスロット数を減らすか、予約全体を削除する必要があります。

Console

容量コミットメントを削除する手順は次のとおりです。

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [Slot commitments] タブをクリックします。

  4. 削除するコミットメントに対して、[アクション] をクリックし、[削除] をクリックします。 コミットメントを削除します。

  5. 「REMOVE」と入力して、[続行] を押します。 コミットメントを削除します。

bq

--capacity_commitment フラグを指定して bq rm コマンドを使用し、容量コミットメントを削除します。

bq rm \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--capacity_commitment COMMITMENT_ID

ここで

Reservations を操作する

Reservations を使用すると、コミットメントから一定数の専用のスロットをワークロードに割り当てることができます。たとえば、本番環境のワークロードがスロット用のテスト ワークロードと競合するのを回避することが必要な場合が考えられます。prod という名前の予約を作成し、本番環境のワークロードをこの予約に割り当てることができます。詳細については、Reservations をご覧ください。

専用スロットを使用して予約を作成する

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [予約を作成] ボタンをクリックします。予約を作成します。

  4. [予約名] フィールドに、prod を入力します。 予約情報を作成します。

  5. [ロケーション] フィールドで、US を選択します。

  6. スロット数には、「500」と入力します。

  7. [保存] をクリックします。

新しい prod 予約が概要テーブルに表示されます。

予約の概要。

bq

予約を作成するには、--reservation フラグを指定した bq mk コマンドを使用します。

bq mk \
  --project_id=ADMIN_PROJECT_ID \
  --location=LOCATION \
  --reservation \
  --slots=NUMBER_OF_SLOTS \
  --ignore_idle_slots=false \
  RESERVATION_NAME

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • NUMBER_OF_SLOTS は、予約に割り当てるスロットの数です。コミットメントには、十分な数の未割り当てのスロットが必要です。
  • RESERVATION_NAME は、予約の名前です。

--ignore_idle_slots フラグの詳細については、アイドル スロットをご覧ください。デフォルト値は false です。

予約のサイズを変更する

既存の予約に対して、スロットを追加または削除できます。

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。 [予約] セクション。

  3. 以前に作成した prod 予約を選択し、[編集] ボタンをクリックします。 予約の編集。

  4. 新しい予約サイズとして、1,000 スロットを入力します。 予約スロットを増やします。

  5. [保存] をクリックします。

  6. 更新された prod 予約のサイズが、予約のリストに表示されます。 予約サイズが更新されました。

bq

予約のサイズを更新するには、--reservation フラグを指定した bq update コマンドを使用します。

bq update \
  --project_id=ADMIN_PROJECT_ID \
  --location=LOCATION \
  --slots=NUMBER_OF_SLOTS \
  --reservation RESERVATION_NAME

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • NUMBER_OF_SLOTS は、予約に割り当てるスロットの数です。
  • RESERVATION_NAME は、予約の名前です。

--ignore_idle_slots の設定を更新する

--ignore_idle_slots フラグは、予約で実行中のクエリから他の予約のアイドル スロットを使用できるかどうかを制御します。詳細については、アイドル スロットをご覧ください。この構成は既存の予約で更新できます。

bq

bq update コマンドに --reservation フラグを指定して、予約を更新します。次の例では、--ignore_idle_slotstrue に設定しています。つまり、予約は、その予約に割り当てられたスロットのみを使用します。

bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--ignore_idle_slots=true \
--reservation RESERVATION_NAME

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • RESERVATION_NAME は、予約の名前です。

予約の削除

予約を削除すると、その予約のスロットで実行中のジョブが失敗します。エラーを防ぐため、予約を削除する前に、処理中のジョブが完了するようにします。

bq

bq rm コマンドに --reservation フラグを指定して、予約を削除します。

bq rm \
--project_id=ADMIN_PROJECT_ID \
  --location=LOCATION \
  --reservation RESERVATION_NAME

ここで

  • ADMIN_PROJECT_ID は、プロジェクト ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • RESERVATION_NAME は、予約の名前です。

割り当てを操作する

組織を予約に割り当てる

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. ナビゲーション パネルで、[予約] セクションに移動します。 Reservations のナビゲーション ボタン。

  3. [割り当て] タブをクリックします。 [割り当て] タブ。

  4. [割り当ての検索と作成] セクションで、[参照] ボタンをクリックして組織を選択します。 プロジェクト割り当て選択ツール。

  5. [予約] 選択ツールで、default. で終わる予約名を選択します。予約割り当て選択ツール。

  6. [作成] をクリックします。

bq

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

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

ここで

  • ADMIN_PROJECT_ID は、予約リソースを所有するプロジェクトの ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • RESERVATION_NAME は、予約の名前です。
  • JOB_TYPE は、この予約に割り当てるジョブの種類です。QUERYPIPELINEML_EXTERNAL のいずれかです。
  • ORGANIZATION_ID は、組織 ID です。

プロジェクトを予約に割り当てる

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [割り当て] タブをクリックします。 [割り当て] タブ。

  4. [割り当ての検索と作成] セクションで [参照] ボタンをクリックし、prod プロジェクトを選択します。 プロジェクト割り当て選択ツール。

  5. [予約] 選択ツールで、prod. で終わる予約名を選択します。予約割り当て選択ツール。

  6. [作成] をクリックします。

bq

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

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

ここで

  • ADMIN_PROJECT_ID は、予約リソースを所有するプロジェクトの ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • RESERVATION_NAME は、予約の名前です。
  • JOB_TYPE は、この予約に割り当てるジョブの種類です。QUERYPIPELINEML_EXTERNAL のいずれかです。
  • PROJECT_ID は、この予約に割り当てるプロジェクトの ID です。

プロジェクトを None に割り当てる

None 割り当ては、割り当てがないことを表します。None に割り当てられたプロジェクトはオンデマンド料金を使用します。

bq

プロジェクトを None に割り当てるには、--reservation_assignment フラグを指定して bq mk コマンドを使用します。

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

ここで

  • ADMIN_PROJECT_ID は、割り当てリソースを所有するプロジェクトの ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • PROJECT_ID は、None に割り当てるプロジェクトの ID です。

スロットを BigQuery ML ワークロードに割り当てる

一部の BigQuery ML クエリは、BigQuery の外部にあるサービスを使用します。これらの外部サービス用に予約スロットを割り当てることができます。

bq

--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 です。

プロジェクトの予約割り当てを一覧表示する

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

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [割り当て] タブをクリックします。 [割り当て] タブ。

  4. プロジェクト選択ツールをクリックし、目的のプロジェクト、フォルダ、または組織を選択します。 プロジェクト割り当て選択ツール。

  5. 予約の割り当てが存在する場合は、選択ツールの下に表示されます。

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 は、プロジェクトのロケーションです。
  • RESERVATION_NAME は、予約の名前です。
  • JOB_TYPE は、ジョブの種類です。QUERYPIPELINEML_EXTERNAL のいずれかです。
  • PROJECT_ID はプロジェクト ID です。

割り当てを別の予約に移動する

割り当ては、ある予約から別の予約に移動できます。

bq

bq update コマンドを使用して、割り当てを移動します。

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

ここで

  • ADMIN_PROJECT_ID は、予約リソースを所有するプロジェクトの ID です。
  • LOCATION は、プロジェクトのロケーションです。
  • DESTINATION_RESERVATION は、割り当ての移動先の予約です。
  • ASSIGNMENT_ID は、割り当ての ID です。割り当て ID を取得するには、プロジェクトの予約割り当てを一覧表示するをご覧ください。

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

予約の割り当てを削除することで、予約からプロジェクトを削除できます。プロジェクトがどの予約にも割り当てられていない場合は、親フォルダまたは組織での割り当てを継承します。または、親割り当てがない場合は、オンデマンド料金を使用します。

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

Console

  1. Cloud Console で、BigQuery ページに移動します。

    BigQuery ページに移動

  2. [予約] セクションをクリックします。

  3. [割り当て] タブをクリックします。 [割り当て] タブ。

  4. 削除する割り当てに対して、[アクション] をクリックし、[削除] をクリックします。割り当てを削除します。

bq

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

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

ここで

予約のトラブルシューティング

このセクションでは、BigQuery Reservations の使用中に問題が発生した場合に役立つトラブルシューティング手順について説明します。

購入したスロットは保留中です

スロットには利用可能な容量が適用されます。スロットを購入して BigQuery で割り当てると、[ステータス] 列にチェックマークが表示されます。BigQuery がリクエストされたスロットをすぐに割り当てられない場合、[ステータス] 列は保留中のままになります。スロットが使用可能になるまで数時間かかることがあります。より早くスロットにアクセスする必要がある場合は、次のことを試してください。

  1. 保留中のコミットメントを削除します。
  2. スロット数を減らす場合は、新しいコミットメントを購入します。容量によっては、小さいコミットメントがすぐに有効になる場合があります。
  3. 残りのスロットは別のコミットメントとして購入します。これらのスロットは [ステータス] 列に保留中として表示されますが、通常は数時間以内にアクティブになります。
  4. 省略可: 両方のコミットメントが使用できる場合、両方を同じプランで購入した場合に限り、単一のコミットメントに統合できます。