予約割り当てを操作する
BigQuery Reservation API を使用すると、専用スロットを購入し(コミットメントと呼ぶ)、スロットのプールを作成し(予約と呼ぶ)、それらの予約にプロジェクト、フォルダ、組織を割り当てることができます。
予約割り当ての作成
購入したスロットを使用するには、割り当てを作成して、プロジェクト、フォルダ、または組織をスロット予約に割り当てます。
プロジェクトは、割り当てられているリソース階層内で最も明確な単一の予約を使用します。フォルダの割り当ては組織の割り当てをオーバーライドし、プロジェクトの割り当てはフォルダの割り当てをオーバーライドします。フォルダと組織の割り当ては、標準エディションの予約では使用できません。
予約に割り当てを作成するには、予約が次のいずれかの条件を満たしている必要があります。
割り当てられたベースライン スロットがゼロ以外の値に構成されている。
自動スケーリング スロットがゼロ以外の値に構成されている。
アイドル スロットを使用するように構成されており、プロジェクトでアイドル スロットが利用可能である。
これらの条件のいずれかを満たさない予約にリソースを割り当てようとすると、次のメッセージが表示されます。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 のロールの詳細については、事前定義ロールと権限をご覧ください。
組織を予約に割り当てる
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
予約の表で予約を見つけます
[アクション] オプションを展開します。
[割り当ての作成] をクリックします。
[割り当ての作成] セクションで [参照] をクリックします。
組織を参照または検索して選択します。
[ジョブタイプ] セクションで、この予約に割り当てるジョブタイプを選択します。選択できるオプションは次のとおりです。
QUERY
PIPELINE
BACKGROUND
ML_EXTERNAL
ジョブタイプの詳細については、予約の割り当てをご覧ください。このデフォルト値は
QUERY
です。[作成] をクリックします。
SQL
組織を予約に割り当てるには、CREATE ASSIGNMENT
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'organizations/ORGANIZATION_ID', job_type = 'JOB_TYPE');
次のように置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
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 分以上待ってからクエリを実行してください。そうしない場合、クエリはオンデマンド料金で課金される可能性があります。
プロジェクトまたはフォルダを予約に割り当てる
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
予約の表で予約を見つけます。
[アクション] オプションを展開します。
[割り当ての作成] をクリックします。
[割り当ての作成] セクションで [参照] をクリックします。
プロジェクトまたはフォルダを参照または検索して選択します。
[ジョブタイプ] セクションで、この予約に割り当てるジョブタイプを選択します。選択できるオプションは次のとおりです。
QUERY
PIPELINE
BACKGROUND
ML_EXTERNAL
ジョブタイプの詳細については、予約の割り当てをご覧ください。このデフォルト値は
QUERY
です。[作成] をクリックします。
SQL
プロジェクトを予約に割り当てるには、CREATE ASSIGNMENT
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE");
次のように置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
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
次のように置き換えます。
予約割り当てを作成する場合は、5 分以上待ってからクエリを実行してください。そうしない場合、クエリはオンデマンド料金で課金される可能性があります。
アイドル スロットのみを使用するプロジェクトを作成するには、0
スロットが割り当てられた予約を作成し、先程の手順に沿ってその予約にプロジェクトを割り当てます。
プロジェクトを none
に割り当てる
none
への割り当ては、割り当てがないことを表します。none
に割り当てられたプロジェクトはオンデマンド料金を使用します。
SQL
プロジェクトを none
に割り当てるには、CREATE ASSIGNMENT
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE");
次のように置き換えます。
LOCATION
: オンデマンド料金を使用するジョブのロケーションASSIGNMENT_ID
: 割り当ての IDID はプロジェクトとロケーションごとに一意でなければならず、先頭と末尾を英小文字または数字にする必要があり、英小文字、数字、ダッシュのみを使用できます。
PROJECT_ID
: 予約に割り当てるプロジェクトの ID
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
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
: 予約リソースを所有するプロジェクトの IDLOCATION
: 予約のロケーション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 のロールの詳細については、事前定義ロールと権限をご覧ください。
プロジェクトの予約割り当てを検索する
プロジェクト、フォルダ、組織が予約に割り当てられているかどうかは、次の手順で確認できます。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
予約の表で、予約を展開してその予約に割り当てられているリソースを参照するか、[フィルタ] フィールドを使用してリソース名でフィルタします。
SQL
プロジェクトのクエリジョブがどの予約に割り当てられているかを確認するには、INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
ビューに対してクエリを実行します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
SELECT assignment_id FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT WHERE assignee_id = 'PROJECT_ID' AND job_type = 'JOB_TYPE';
次のように置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
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
次のように置き換えます。
予約割り当ての更新
割り当てを別の予約に移動する
割り当ては、ある予約から別の予約に移動できます。
予約割り当てを移動するには、管理プロジェクトと割り当て先に対する次の 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
: 予約リソースを所有するプロジェクトの IDLOCATION
: 新しい予約のロケーション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
プロジェクトを予約から削除する
予約からプロジェクトを削除するには:
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
予約の表で、予約を展開してプロジェクトを見つけます。
[アクション] オプションを展開します。
[削除] をクリックします。
SQL
DROP ASSIGNMENT
DDL ステートメントを使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
DROP ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
次のように置き換えます。
ADMIN_PROJECT_ID
: 予約リソースを所有する管理プロジェクトのプロジェクト IDLOCATION
: 予約のロケーションRESERVATION_NAME
: 予約の名前ASSIGNMENT_ID
: 割り当ての ID割り当て ID を確認するには、プロジェクトの予約割り当てを一覧表示するをご覧ください。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約からプロジェクトを削除するには、--reservation_assignment
フラグを指定して bq rm
コマンドを使用します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID
次のように置き換えます。
ADMIN_PROJECT_ID
: 予約リソースを所有するプロジェクトの IDLOCATION
: 予約のロケーションRESERVATION_NAME
: 予約の名前ASSIGNMENT_ID
: 割り当ての ID割り当て ID を取得するには、プロジェクトの予約割り当てを検索するをご覧ください。