スロット予約の操作
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 エディションの機能は、エディション内でのみ使用できます。詳細については、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
予約を作成するには、bq mk
コマンドを使用し、--reservation
フラグを指定します。
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
予約のサイズを変更するには、ALTER RESERVATION SET OPTIONS
データ定義言語(DDL)ステートメントを使用します。
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
予約のサイズを更新するには、bq update
コマンドを使用し、--reservation
フラグを指定します。
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
フラグは、予約で実行中のクエリから他の予約のアイドル スロットを使用できるかどうかを制御します。詳細については、アイドル スロットをご覧ください。この構成は既存の予約で更新できます。
予約を更新するには、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
: プロジェクト 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
予約を削除するには、bq rm
コマンドを使用し、--reservation
フラグを指定します。
bq rm \ --project_id=ADMIN_PROJECT_ID \ --location=LOCATION \ --reservation RESERVATION_NAME
以下を置き換えます。
Python