Reservations を操作する

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

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

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

スロットの購入

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

Console

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

    BigQuery に移動

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

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

  4. [Configuration] セクションで、次の操作を行います。

    1. コミットメント プランを選択します。
    2. ロケーションを選択します。
    3. 購入するスロットの数を入力します。
    4. [次へ] をクリックします。
  5. 購入の費用の見積もりを確認します。

  6. [確認して送信] の下で、

    1. CONFIRM」と入力して購入を確定します。
    2. [購入] をクリックして、スロットを購入します。
  7. コミットメントを表示するには、[スロット コミットメントを表示] をクリックします。容量がプロビジョニングされると、リクエストされた容量コミットメントのステータスが緑色になります。

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

初めて容量を購入する場合は、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. [スロット コミットメント] タブをクリックします。容量コミットメントは、[コミットメント] の下のテーブルに一覧表示されます。

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

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. [スロット コミットメント] タブをクリックします。

  4. 編集するコミットメントを見つけます。

  5. [アクション] オプションを展開します。

  6. [編集] をクリックします。

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

ここで

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

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

Console

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

    BigQuery に移動

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

  3. [スロット コミットメント] タブをクリックします。

  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. [スロット コミットメント] タブをクリックします。

  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. [スロット コミットメント] タブをクリックします。

  4. 削除するコミットメントを見つけます。

  5. [アクション] オプションを展開します。

  6. [削除] をクリックします。

  7. 「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. [予約名] フィールドに、予約の名前を入力します。

  5. [ロケーション] プルダウン リストで、ロケーションを選択します。

  6. [スロットの割り当て] に、予約のスロットの数を入力します。

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

新しい予約が [予約] タブに表示されます。

予約の概要。

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. [予約] タブをクリックします。

  4. 削除する予約を見つけます。

  5. [アクション] オプションを展開します。

  6. [編集] をクリックします。

  7. [スロットの編集] ダイアログで、スロットの数を入力します。

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

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 は、予約の名前です。

予約の削除

予約を削除すると、その予約のスロットで実行中のジョブが失敗します。エラーが発生しないようにするには、実行中のジョブを完了させてから予約を削除してください。

Console

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

    BigQuery に移動

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

  3. [予約] タブをクリックします。

  4. 削除する予約を見つけます。

  5. [アクション] オプションを展開します。

  6. [削除] をクリックします。

  7. [予約の削除] ダイアログで、[削除] をクリックします。

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. ナビゲーション パネルで、[予約] セクションに移動します。

  3. [予約] タブをクリックします。

  4. 予約の表で予約を見つけます

  5. [アクション] オプションを展開します。

  6. [割り当ての作成] をクリックします。

  7. [割り当ての作成] セクションで [参照] をクリックします。

  8. 組織を参照または検索して選択します。

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

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. 予約の表で予約を見つけます。

  5. [アクション] オプションを展開します。

  6. [割り当ての作成] をクリックします。

  7. [割り当ての作成] セクションで [参照] をクリックします。

  8. プロジェクトまたはフォルダを参照または検索して選択します。

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

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. 予約の表で、予約を展開してその予約に割り当てられているリソースを参照するか、[フィルタ] フィールドを使用してリソース名でフィルタします。

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. 予約の表で、予約を展開してプロジェクトを見つけます。

  5. [アクション] オプションを展開します。

  6. [削除] をクリックします。

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. 省略可: 両方のコミットメントが使用できる場合、両方を同じプランで購入した場合に限り、単一のコミットメントに統合できます。

スロット コミットメントが失敗した場合、または完了に時間がかかる場合は、一時的にオンデマンド料金の使用を検討してください。その場合、予約に割り当てられていない別のプロジェクトで重要なクエリを実行することが必要になる場合があります。また、プロジェクトの割り当てを完全に削除する必要が生じることもあります。