スロット予約の操作
BigQuery Reservation API を使用すると、専用スロットを購入し(コミットメントと呼ぶ)、スロットのプールを作成し(予約と呼ぶ)、それらの予約にプロジェクト、フォルダ、組織を割り当てることができます。
予約を使用すると、一定数の専用のスロットをワークロードに割り当てることができます。たとえば、本番環境のワークロードとテスト ワークロードでのスロットの取り合いを回避する必要がある場合が考えられます。prod
という名前の予約を作成し、本番環境のワークロードをこの予約に割り当てることができます。詳細については、Reservations をご覧ください。
予約を作成する
必要な権限
予約を作成するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する、
bigquery.reservations.create
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Resource Editor
BigQuery Resource Admin
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
専用スロットを使用して予約を作成する
次のオプションのいずれかを選択します。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動し、[予約を作成] をクリックします。
[予約名] フィールドに、予約の名前を入力します。
[ロケーション] プルダウン リストで、ロケーションを選択します。BigQuery Omni のロケーションを選択した場合、エディション オプションは Enterprise エディションに限定されます。
[エディション] リストでエディションを選択します。自動スケーリングはエディション内でのみ利用可能です。詳細については、BigQuery エディションの概要をご覧ください。
[最大予約サイズセレクタ] リストで、最大予約サイズを選択します。
省略可: [ベースライン スロット] フィールドに、予約用のベースライン スロット数を入力します。
使用可能な自動スケーリング スロットの数は、[最大予約サイズ] から [ベースライン スロット] の値を引いた値になります。たとえば、ベースライン スロットを 100 個、最大予約サイズを 400 個として予約を作成した場合、その予約には 300 個の自動スケーリング スロットがあります。ベースライン スロットの詳細については、ベースライン スロットと自動スケーリング スロットを使用した予約の使用をご覧ください。
アイドル スロットの共有を無効にして、指定したスロット容量のみを使用するには、[アイドル スロットを無視する] トグルをクリックします。
[詳細設定] セクションを開くには、
展開矢印をクリックします。省略可: ターゲット ジョブの同時実行を設定するには、[自動のターゲット ジョブ同時実行をオーバーライドする] トグルをオンに切り替えて、ターゲット ジョブの同時実行を入力します。
スロットの内訳は、[費用見積もり] テーブルに表示されます。予約の概要が [容量の概要] テーブルに表示されます。
[保存] をクリックします。
新しい予約が [スロットの予約] タブに表示されます。
SQL
予約を作成するには、DDL ステートメント CREATE RESERVATION
を使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
CREATE RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, edition = EDITION, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
次のように置き換えます。
ADMIN_PROJECT_ID
: 予約リソースを所有する管理プロジェクトのプロジェクト IDLOCATION
: 予約のロケーション。BigQuery Omni のロケーションを選択した場合、エディション オプションは Enterprise エディションに限定されます。RESERVATION_NAME
: 予約の名前先頭と末尾は英小文字または数字にしてください。使用できるのは英小文字、数字、ダッシュのみです。
NUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるスロットの数(ベースライン)。slot_capacity
オプションとedition
オプションを同じ予約内で設定することはできません。EDITION
: 予約のエディション。予約をエディションに割り当てると、機能と料金が変更されます。詳細については、BigQuery エディションの概要をご覧ください。NUMBER_OF_AUTOSCALING_SLOTS
: 予約に割り当てられている自動スケーリング スロットの数。これは、最大予約サイズの値からベースラインのスロット数を差し引いた値に等しくなります。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約を作成するには、--reservation
フラグを指定して bq mk
コマンドを使用します。
bq mk \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation \ --slots=NUMBER_OF_BASELINE_SLOTS \ --ignore_idle_slots=false \ --edition=EDITION \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ RESERVATION_NAME
次のように置き換えます。
ADMIN_PROJECT_ID
: プロジェクト IDLOCATION
: 予約のロケーション。BigQuery Omni のロケーションを選択した場合、エディション オプションは Enterprise エディションに限定されます。NUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるベースラインのスロット数。RESERVATION_NAME
: 予約の名前EDITION
: 予約のエディション。予約をエディションに割り当てると、機能と料金が変更されます。詳細については、BigQuery エディションの概要をご覧ください。NUMBER_OF_AUTOSCALING_SLOTS
: 予約に割り当てられている自動スケーリング スロットの数。これは、最大予約サイズの値からベースラインのスロット数を差し引いた値に等しくなります。
--ignore_idle_slots
フラグの詳細については、アイドル スロットをご覧ください。デフォルト値は false
です。
Terraform
google_bigquery_reservation
リソースを使用します。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。
次の例では、my-reservation
という名前の予約を作成します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
Python
予約を更新する
予約に対して以下の更新を行うことができます。
- 予約サイズを変更するには、スロットを追加または削除します。
- この予約のクエリがアイドル スロットを使用するかどうかを構成します。
- 予約に割り当てるベースライン スロットまたは自動スケーリング スロットの数を変更する。
- ターゲット ジョブ同時実行を設定する。
予約のエディションを変更するには、まず予約を削除し、続いて更新されたエディションで予約を作成します。
必要な権限
予約を更新するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する、
bigquery.reservations.update
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
予約のサイズを変更する
既存の予約に対して、スロットを追加または削除できます。
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[スロットの予約] タブをクリックします。
更新する予約を見つけます。
[アクション] オプションを開きます。
[編集] をクリックします。
[最大予約サイズ セレクタ] ダイアログで、最大予約サイズを入力します。
[ベースライン スロット数] フィールドに、ベースライン スロット数を入力します。
[詳細設定] セクションを開くには、
展開矢印をクリックします。省略可: ターゲット ジョブの同時実行を設定するには、[自動のターゲット ジョブ同時実行をオーバーライドする] トグルをオンに切り替えて、ターゲット ジョブの同時実行を入力します。
[保存] をクリックします。
SQL
予約のサイズを変更するには、データ定義言語(DDL)ステートメント ALTER RESERVATION SET OPTIONS
を使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
ALTER RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME` SET OPTIONS ( slot_capacity = NUMBER_OF_BASELINE_SLOTS, autoscale_max_slots = NUMBER_OF_AUTOSCALING_SLOTS);
次のように置き換えます。
ADMIN_PROJECT_ID
: 予約リソースを所有する管理プロジェクトのプロジェクト IDLOCATION
: 予約のロケーション(例:europe-west9
)。RESERVATION_NAME
: 予約の名前先頭と末尾は英小文字または数字にしてください。使用できるのは英小文字、数字、ダッシュのみです。NUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるベースライン スロットの数。NUMBER_OF_AUTOSCALING_SLOTS
: 予約に割り当てられている自動スケーリング スロットの数。これは、最大予約サイズの値からベースラインのスロット数を差し引いた値に等しくなります。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約のサイズを更新するには、--reservation
フラグを指定して bq update
コマンドを使用します。
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --slots=NUMBER_OF_BASELINE_SLOTS \ --autoscale_max_slots=NUMBER_OF_AUTOSCALING_SLOTS \ --reservation RESERVATION_NAME
次のように置き換えます。
ADMIN_PROJECT_ID
: プロジェクト IDLOCATION
: 予約のロケーションNUMBER_OF_BASELINE_SLOTS
: 予約に割り当てるベースラインのスロット数。RESERVATION_NAME
: 予約の名前NUMBER_OF_AUTOSCALING_SLOTS
: 予約に割り当てられている自動スケーリング スロットの数。これは、最大予約サイズの値からベースラインのスロット数を差し引いた値に等しくなります。
Python
クエリでアイドル スロットを使用するかどうかを構成する
--ignore_idle_slots
フラグは、予約で実行中のクエリから他の予約のアイドル スロットを使用できるかどうかを制御します。詳細については、アイドル スロットをご覧ください。この構成は既存の予約で更新できます。
予約を更新するには、--reservation
フラグを指定して bq update
コマンドを使用します。次の例では、--ignore_idle_slots
を true
に設定しています。つまり、予約は、その予約に割り当てられたスロットのみを使用します。
bq update \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --ignore_idle_slots=true \ --reservation RESERVATION_NAME
次のように置き換えます。
ADMIN_PROJECT_ID
: プロジェクト IDLOCATION
: 予約のロケーションRESERVATION_NAME
: 予約の名前
アイドル スロット構成を一覧表示する
予約のアイドル スロットの設定を一覧表示するには、次のようにします。
SQL
INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
ビューの ignore_idle_slots
列のクエリを実行します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
SELECT reservation_name, ignore_idle_slots FROM `ADMIN_PROJECT_ID.region-LOCATION`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT;
次のように置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
--reservation
フラグを指定して bq ls
コマンドを使用します。
bq ls --reservation \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION
次のように置き換えます。
ignoreIdleSlots
フィールドには、構成設定が含まれています。
予約を削除する
予約を削除すると、その予約のスロットで実行中のジョブが失敗します。エラーが発生しないようにするには、実行中のジョブを完了させてから予約を削除してください。
必要な権限
予約を削除するには、次の Identity and Access Management(IAM)権限が必要です。
- コミットメントの所有権を持つ管理プロジェクトに対する、
bigquery.reservations.delete
。
この権限は、次の各 IAM 事前定義ロールに含まれています。
BigQuery Admin
BigQuery Resource Admin
BigQuery Resource Editor
BigQuery での IAM のロールの詳細については、事前定義ロールと権限をご覧ください。
予約の削除
コンソール
Google Cloud コンソールで [BigQuery] ページに移動します。
ナビゲーション パネルで [容量管理] セクションに移動します。
[予約] タブをクリックします。
削除する予約を見つけます。
[アクション] オプションを開きます。
[削除] をクリックします。
[予約の削除] ダイアログで、[削除] をクリックします。
SQL
予約を削除するには、DDL ステートメント DROP RESERVATION
を使用します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
DROP RESERVATION `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME`;
次のように置き換えます。
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
予約を削除するには、--reservation
フラグを指定して bq rm
コマンドを使用します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation RESERVATION_NAME
次のように置き換えます。
Python