構成設定を管理する
BigQuery 管理者とプロジェクト オーナーは、組織レベルとプロジェクト レベルで構成設定を管理できます。構成を設定して、データ インフラストラクチャ全体でセキュリティを適用し、費用を制御して、クエリのパフォーマンスを最適化できます。デフォルト値を設定することで、コンプライアンスと運用効率の整合性を確保し、BigQuery 環境の管理を容易にできます。
構成設定を指定する
以降のセクションでは、デフォルトの構成設定を指定する方法について説明します。デフォルト設定は組織レベルまたはプロジェクト レベルで構成されますが、セッション レベルまたはジョブレベルでオーバーライドできます。デフォルトの動作を適用するには、関連する組織のポリシーと組み合わせてデフォルト設定を構成します。
必要なロール
構成設定を指定するために必要な権限を取得するには、BigQuery 管理者(roles/bigquery.admin)IAM ロールの付与を管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、構成設定を指定するために必要な bigquery.config.update 権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。
組織の設定を構成する
次の GoogleSQL ステートメントを使用して、組織レベルで設定を構成できます。構成を指定するときに、構成を適用するリージョンを指定する必要があります。ステートメントごとに使用できるリージョンは 1 つのみです。
組織設定を構成するには、ALTER ORGANIZATION SET OPTIONS DDL ステートメントを使用します。次の例では、次のものを含む複数のデフォルト構成を指定しています。
- タイムゾーン:
America/Chicago - Cloud KMS 鍵: ユーザー定義の鍵
- クエリのタイムアウト: 30 分(1,800,000 ミリ秒)
- インタラクティブ クエリキューのタイムアウト: 10 分(600,000 ミリ秒)
- バッチ クエリキューのタイムアウト: 20 分(1,200,000 ミリ秒)
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.default_time_zone`= 'America/Chicago', -- Ensure all service accounts under the organization have permission to KMS_KEY `region-REGION.default_kms_key_name` = KMS_KEY, `region-REGION.default_query_job_timeout_ms` = 1800000, `region-REGION.default_interactive_query_queue_timeout_ms` = 600000, `region-REGION.default_batch_query_queue_timeout_ms` = 1200000, `region-REGION.default_storage_billing_model`= BILLING_MODEL, `region-REGION.default_max_time_travel_hours` = 72);
次のように置き換えます。
REGION: プロジェクトまたは組織に関連付けられたリージョン(例:us、europe-west6)。KMS_KEY: ユーザー定義の Cloud KMS 鍵。詳細については、顧客管理の Cloud KMS 鍵をご覧ください。BILLING_MODEL: 新しいデータセットのストレージ モデル(物理バイトの場合はPHYSICALなど)。
次の例では、組織レベルのデフォルト設定をすべてクリアしています。
ALTER ORGANIZATION SET OPTIONS ( `region-REGION.default_time_zone` = NULL, `region-REGION.default_kms_key_name` = NULL, `region-REGION.default_query_job_timeout_ms` = NULL, `region-REGION.default_interactive_query_queue_timeout_ms` = NULL, `region-REGION.default_batch_query_queue_timeout_ms` = NULL, `region-REGION.default_storage_billing_model`= NULL, `region-REGION.default_max_time_travel_hours` = NULL);
プロジェクト設定を構成する
次の GoogleSQL ステートメントを使用して、プロジェクト レベルで設定を構成できます。構成を指定するときに、構成を適用するリージョンを指定する必要があります。ステートメントごとに使用できるリージョンは 1 つのみです。
プロジェクト設定を構成するには、ALTER PROJECT SET OPTIONS DDL ステートメントを使用します。ALTER PROJECT SET OPTIONS DDL ステートメントは、必要に応じて PROJECT_ID 変数を受け入れます。PROJECT_ID が指定されていない場合、デフォルトはクエリが実行される現在のプロジェクトです。次の例では、複数のデフォルト構成を指定しています。
- タイムゾーン:
America/Los_Angeles - Cloud KMS 鍵: 鍵の例
- クエリのタイムアウト: 1 時間
- インタラクティブ クエリキューのタイムアウト: 10 分
- バッチ クエリキューのタイムアウト: 20 分
- 予約ベースの公平性: 有効
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.default_time_zone` = 'America/Los_Angeles', -- Ensure all service accounts under the project have permission to KMS_KEY `region-REGION.default_kms_key_name` = KMS_KEY, `region-REGION.default_query_job_timeout_ms` = 3600000, `region-REGION.default_interactive_query_queue_timeout_ms` = 600000, `region-REGION.default_batch_query_queue_timeout_ms` = 1200000, `region-REGION.default_storage_billing_model`= BILLING_MODEL, `region-REGION.default_max_time_travel_hours` = 72, `region-REGION.default_cloud_resource_connection_id` = CONNECTION_ID, `region-REGION.default_sql_dialect_option` = 'default_google_sql', `region-REGION.enable_reservation_based_fairness` = true);
次のように置き換えます。
PROJECT_ID: プロジェクトの ID。REGION: プロジェクトまたは組織に関連付けられたリージョン(例:us、europe-west6)。KMS_KEY: ユーザー定義の Cloud KMS 鍵。詳細については、顧客管理の Cloud KMS 鍵をご覧ください。BILLING_MODEL: 新しいデータセットのストレージ モデル(物理バイトの場合はPHYSICALなど)。CONNECTION_ID: テーブルとモデルのデフォルトの接続として使用する接続の ID。
次の例では、プロジェクト レベルのデフォルト設定をすべてクリアしています。デフォルト設定では、組織レベルのデフォルト設定が存在する場合は、それを使用します。それ以外の場合、すべてのデフォルト設定はすべてグローバルのデフォルトに設定されます。
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-REGION.default_time_zone` = NULL, `region-REGION.default_kms_key_name` = NULL, `region-REGION.default_query_job_timeout_ms` = NULL, `region-REGION.default_interactive_query_queue_timeout_ms` = NULL, `region-REGION.default_batch_query_queue_timeout_ms` = NULL, `region-REGION.default_storage_billing_model`= NULL, `region-REGION.default_max_time_travel_hours` = NULL, `region-REGION.default_cloud_resource_connection_id` = NULL, `region-REGION.default_sql_dialect_option` = NULL, `region-REGION.enable_reservation_based_fairness` = NULL);
プロジェクト レベルの構成は、組織レベルの構成をオーバーライドします。また、プロジェクト レベルの構成よりもセッション レベルの構成が優先され、さらにジョブレベルの構成の方が優先されます。
構成設定を取得する
組織またはプロジェクトの構成設定を表示するには、次の INFORMATION_SCHEMA ビューを使用します。
INFORMATION_SCHEMA.PROJECT_OPTIONS: プロジェクトに適用される構成。INFORMATION_SCHEMA.EFFECTIVE_PROJECT_OPTIONS: プロジェクトに適用される有効な構成。有効な構成には、プロジェクト レベルで設定されたすべての構成と、プロジェクトが組織から継承されたすべての設定が含まれます。INFORMATION_SCHEMA.ORGANIZATION_OPTIONS: 組織に適用される構成。
新しい構成が有効になり、INFORMATION_SCHEMA ビューに反映されるまでには、数分かかることがあります。
必要なロール
構成設定を取得するために必要な権限を取得するには、指定されたプロジェクトに対する BigQuery ジョブユーザー(roles/bigquery.jobUser)IAM ロールの付与を管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、構成設定を取得するために必要な bigquery.config.get 権限が含まれています。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。
例
us リージョンの組織の構成を表示するには、次のクエリを実行します。
SELECT * FROM region-us.INFORMATION_SCHEMA.ORGANIZATION_OPTIONS;
us リージョンのデフォルト プロジェクトで有効になっている構成を表示するには、次のクエリを実行します。
SELECT * FROM region-us.INFORMATION_SCHEMA.EFFECTIVE_PROJECT_OPTIONS;
us リージョンのデフォルト プロジェクトの構成を表示するには、次のクエリを実行します。
SELECT * FROM region-us.INFORMATION_SCHEMA.PROJECT_OPTIONS;
構成設定
以降のセクションでは、指定できる構成設定について説明します。
クエリとジョブの実行設定
次の設定を使用して、クエリの実行、タイミング、キューイングを制御します。
default_batch_query_queue_timeout_ms: バッチクエリがキューに入れられるデフォルトの時間(ミリ秒単位)。設定しなかった場合、デフォルトは 24 時間です。最小値は 1 ミリ秒です。最大値は 48 時間です。バッチクエリのキューイングをオフにするには、この値を-1に設定します。default_interactive_query_queue_timeout_ms: インタラクティブ クエリがキューに格納されるデフォルトの時間(ミリ秒単位)。設定しなかった場合、デフォルトは 6 時間です。最小値は 1 ミリ秒です。最大値は 48 時間です。インタラクティブ クエリのキューイングをオフにするには、この値を-1に設定します。default_query_job_timeout_ms: クエリジョブがタイムアウトするまでのデフォルトの時間(ジョブがキューに追加された時間や実行に費やされた時間など)。タイムアウト時間は 5 分~48 時間の範囲で指定する必要があります。このタイムアウトは、個々のクエリジョブとスクリプトの子ジョブにのみ適用されます。スクリプト ジョブのタイムアウトを設定するには、jobs.insert API メソッドを使用してjobTimeoutMsフィールドを設定する必要があります。enable_reservation_based_fairness: アイドル状態のスロットの共有方法を決定するオプション。デフォルト値は false です。つまり、アイドル スロットはすべてのクエリ プロジェクトに均等に分散されます。有効にすると、アイドル スロットはまずすべての予約間で均等に共有され、次に予約内のプロジェクト間で均等に共有されます。詳細については、予約ベースの公平性をご覧ください。このオプションはプロジェクト レベルでのみサポートされています。組織レベルまたはジョブレベルで指定することはできません。default_time_zone: タイムゾーンが引数として指定されていない場合に、タイムゾーンに依存する GoogleSQL 関数で使用するデフォルトのタイムゾーン。この構成は、時間単位の列パーティション分割テーブル(タイムゾーンとして UTC を使用)、Storage Transfer Service による転送スケジュール、bq コマンドライン ツールでのデータの読み込みには適用されません。詳細については、タイムゾーンをご覧ください。default_query_optimizer_options: 履歴ベースのクエリの最適化。このオプションは次のいずれかになります。'adaptive=on': 履歴ベースのクエリ最適化を使用します。'adaptive=off': 履歴ベースのクエリ最適化を使用しません。NULL(デフォルト): デフォルトの履歴ベースのクエリ最適化の設定を使用します('adaptive=on'と同等)。
default_sql_dialect_option: bq コマンドライン ツールまたは BigQuery API を使用してクエリジョブを実行するためのデフォルトの SQL クエリ言語。この設定を変更しても、コンソールのデフォルトの言語には影響しません。このオプションは次のいずれかになります。'default_legacy_sql'(デフォルト): クエリ言語がジョブレベルで指定されていない場合は、レガシー SQL を使用します。'default_google_sql': ジョブレベルでクエリ言語が指定されていない場合は、GoogleSQL を使用します。'only_google_sql': ジョブレベルでクエリ言語が指定されていない場合は、GoogleSQL を使用します。クエリ言語がレガシー SQL に設定されているジョブを拒否します。NULL: デフォルトのクエリ言語設定を使用します('default_legacy_sql'と同等)。
データ マネジメントの設定
次の設定を使用して、データの作成、セキュリティ、ライフサイクルのルールを定義します。
default_column_name_character_map: 列名の文字のデフォルトのスコープと処理。設定されていない場合、列名にサポートされていない文字を含む読み込みジョブは失敗し、エラー メッセージが返されます。古いテーブルの中には、列名でサポートされていない文字を置き換えるように設定されているものがあります。詳細については、load_option_listをご覧ください。default_kms_key_name: 一時テーブルまたは匿名テーブルなどのテーブルデータを暗号化するためのデフォルトの Cloud Key Management Service 鍵。詳細については、顧客管理の Cloud KMS 鍵をご覧ください。default_max_time_travel_hours: 新しいデータセットのデフォルトのタイムトラベル期間(時間)。この期間には 48~168 の範囲で、24 で割り切れる値を指定する必要があります。デフォルトの最大タイムトラベル時間を変更しても、既存のデータセットには影響しません。詳細については、タイムトラベルとデータの保持をご覧ください。
費用とリソースの設定
次の設定を使用して、リソースの課金方法と接続方法を決定します。
default_storage_billing_model: 新しいデータセットのデフォルトのストレージ課金モデル。ストレージ料金の計算時に物理バイトを使用する場合はこの値をPHYSICALに設定し、論理バイトを使用する場合はLOGICALに設定します。デフォルトのストレージ課金モデルを変更しても、既存のデータセットに影響はありません。詳細については、ストレージの課金モデルをご覧ください。default_cloud_resource_connection_id: テーブルとモデルの作成時に使用するデフォルトの接続。接続の ID または名前のみを指定し、付加されているプロジェクト ID とリージョン接頭辞は除外します。デフォルト接続を使用すると、作成するテーブルまたはモデルのタイプに応じて、接続のサービス アカウントに付与された権限が更新されます。詳細については、デフォルト接続の概要をご覧ください。
料金
BigQuery 構成サービスの使用には追加料金は発生しません。詳細については、料金をご覧ください。