このページでは、BigQuery Reservations を使用して一般的なタスクを実行する方法を説明します。
Reservations API を使用すると、専用スロット(コミットメントと呼ばれる)を購入し、スロットのプール(予約と呼ばれる)を作成して、プロジェクトと組織をそれらの予約に割り当てることができます。これらのコンセプトの詳細については、Reservations の概要をご覧ください。
コミットメントを操作する
スロットの購入
コミットメントは、リージョン リソースです。あるリージョンで購入したコミットメントを他のリージョンで使用することや、コミットメントをリージョン間で移動することはできません。
Console
Cloud Console で、BigQuery ページに移動します。
ナビゲーション パネルで、[予約] セクションに移動します。
[スロットの購入] ボタンをクリックします。
コミットメントの期間を選択します。
購入しようとするスロットに組織全体を割り当てる場合は、[デフォルトの組織を定額料金にする] を有効にします。必要に応じてこのオプションを無効にして、予約への組織の割り当てセクションに示すように、個別のプロジェクトを割り当てることができます。
ロケーションを選択します。
スロットの数を入力します。
注文を確認し、「
CONFIRM
」と入力して注文を確定します。購入を完了するには、[PURCHASE
] を選択します。容量がプロビジョニングされると、リクエストされた容量コミットメントのステータスが緑色になります。
初めて容量を購入する場合は、default
予約が作成されます。
bq
スロットを購入するには、--capacity_commitment
フラグを指定して bq mk
コマンドを使用します。
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --capacity_commitment \ --plan=PLAN_TYPE \ --slots=NUMBER_OF_SLOTS
ここで
購入したコミットメントを表示する
プロジェクトごとに容量コミットメントを表示するには:
Console
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[Slot commitments] タブをクリックします。
bq
--capacity_commitment
フラグを指定した bq ls
コマンドを使用して、管理プロジェクトのコミットメントを一覧表示します。
bq ls \ --capacity_commitment \ --location=LOCATION \ --project_id=ADMIN_PROJECT_ID
ここで
LOCATION
は、プロジェクトのロケーションです。ADMIN_PROJECT_ID
は、プロジェクト ID です。
コミットメントを更新する
コミットメント更新プランのオプションは、コミットメント終了日より前に選択できます。
Console
新しいコミットメント
更新プランのオプションは、コミットメントの作成時に選択できます。
既存のコミットメント
既存の年単位コミットメントの更新プランの選択を変更できます。
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[Slot commitments] タブをクリックします。
編集するコミットメントに対して、[アクション] をクリックし、[編集] をクリックします。
bq
既存のコミットメントの更新プランを変更するには、--renewal_plan
オプション付きで bq
update
コマンドを使用します。
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --renewal_plan=PLAN_TYPE \ --capacity_commitment COMMITMENT_ID
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。PLAN_TYPE
は、プランの種類です。FLEX
、MONTHLY
、ANNUAL
のいずれかです。COMMITMENT_ID
は、コミットメントの ID です。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
は、新しいプランの種類です。FLEX
、MONTHLY
、ANNUAL
のいずれかです。RENEWAL_PLAN
は、更新プランの種類です。COMMITMENT_ID
は、コミットメントの ID です。ID を取得するには、購入したコミットメントを表示するをご覧ください。
コミットメントを分割する
自身のコミットメントを、同じプランで同じコミットメント終了日の 2 つのコミットメントに分割できます。これは、コミットメントの一部を更新する必要がある場合に有用な可能性があります。たとえば、年定額契約のコミットメント 1,000 スロットがある場合、このコミットメントを分割して、年定額契約で 500 スロットを更新し、さらに終了日後に 500 スロットを Flex Slots のスロットに変換できます。
Console
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[Slot commitments] タブをクリックします。
分割するコミットメントを選択します。
[スプリット] をクリックします。
[Split commitment] ページで、[Configure split] スライダーを使用して、各スプリットに含めるスロットの数を 100 単位で増やします。
[スプリット] をクリックして、コミットメントを分割します。新しいコミットメントが [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
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[Slot commitments] タブをクリックします。
統合するコミットメントを選択します。
[Merge] をクリックします。
[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
容量コミットメントを削除する手順は次のとおりです。
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[Slot commitments] タブをクリックします。
削除するコミットメントに対して、[アクション] をクリックし、[削除] をクリックします。
「REMOVE」と入力して、[続行] を押します。
bq
--capacity_commitment
フラグを指定して bq rm
コマンドを使用し、容量コミットメントを削除します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --capacity_commitment COMMITMENT_ID
ここで
ADMIN_PROJECT_ID
は、プロジェクト ID です。LOCATION
は、プロジェクトのロケーションです。COMMITMENT_ID
は、コミットメントの ID です。ID を取得するには、購入したコミットメントを表示するをご覧ください。
Reservations を操作する
Reservations を使用すると、コミットメントから一定数の専用のスロットをワークロードに割り当てることができます。たとえば、本番環境のワークロードがスロット用のテスト ワークロードと競合するのを回避することが必要な場合が考えられます。prod
という名前の予約を作成し、本番環境のワークロードをこの予約に割り当てることができます。詳細については、Reservations をご覧ください。
専用スロットを使用して予約を作成する
Console
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[予約を作成] ボタンをクリックします。
[予約名] フィールドに、
prod
を入力します。[ロケーション] フィールドで、
US
を選択します。スロット数には、「
500
」と入力します。[保存] をクリックします。
新しい 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
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
以前に作成した
prod
予約を選択し、[編集] ボタンをクリックします。新しい予約サイズとして、1,000 スロットを入力します。
[保存] をクリックします。
更新された
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_slots
を true
に設定しています。つまり、予約は、その予約に割り当てられたスロットのみを使用します。
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
Cloud Console で、BigQuery ページに移動します。
ナビゲーション パネルで、[予約] セクションに移動します。
[割り当て] タブをクリックします。
[割り当ての検索と作成] セクションで、[参照] ボタンをクリックして組織を選択します。
[予約] 選択ツールで、
default.
で終わる予約名を選択します。[作成] をクリックします。
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
ここで
プロジェクトを予約に割り当てる
Console
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[割り当て] タブをクリックします。
[割り当ての検索と作成] セクションで [参照] ボタンをクリックし、prod プロジェクトを選択します。
[予約] 選択ツールで、
prod.
で終わる予約名を選択します。[作成] をクリックします。
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
は、この予約に割り当てるジョブの種類です。QUERY
、PIPELINE
、ML_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
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[割り当て] タブをクリックします。
プロジェクト選択ツールをクリックし、目的のプロジェクト、フォルダ、または組織を選択します。
予約の割り当てが存在する場合は、選択ツールの下に表示されます。
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
は、ジョブの種類です。QUERY
、PIPELINE
、ML_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
Cloud Console で、BigQuery ページに移動します。
[予約] セクションをクリックします。
[割り当て] タブをクリックします。
削除する割り当てに対して、[アクション] をクリックし、[削除] をクリックします。
bq
--reservation_assignment
フラグを指定した bq rm
コマンドを使用して、予約からプロジェクトを削除します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment ASSIGNMENT_ID
ここで
ADMIN_PROJECT_ID
は、予約リソースを所有するプロジェクトの ID です。LOCATION
は、プロジェクトのロケーションです。ASSIGNMENT_ID
は、割り当ての ID です。割り当て ID を取得するには、プロジェクトの予約割り当てを一覧表示するをご覧ください。
予約のトラブルシューティング
このセクションでは、BigQuery Reservations の使用中に問題が発生した場合に役立つトラブルシューティング手順について説明します。
購入したスロットは保留中です
スロットには利用可能な容量が適用されます。スロットを購入して BigQuery で割り当てると、[ステータス] 列にチェックマークが表示されます。BigQuery がリクエストされたスロットをすぐに割り当てられない場合、[ステータス] 列は保留中のままになります。スロットが使用可能になるまで数時間かかることがあります。より早くスロットにアクセスする必要がある場合は、次のことを試してください。
- 保留中のコミットメントを削除します。
- スロット数を減らす場合は、新しいコミットメントを購入します。容量によっては、小さいコミットメントがすぐに有効になる場合があります。
- 残りのスロットは別のコミットメントとして購入します。これらのスロットは [ステータス] 列に保留中として表示されますが、通常は数時間以内にアクティブになります。
- 省略可: 両方のコミットメントが使用できる場合、両方を同じプランで購入した場合に限り、単一のコミットメントに統合できます。