BI Engine の容量を予約する

BigQuery BI Engine を使用する場合は、プロジェクト用に購入した BI Engine の容量に基づいて料金が発生します。予約は GB/時間で請求され、料金はオンデマンド料金に従ってリージョンごとに設定されます。容量ベースのコミットメントがある場合は、アクティブなコミットメントに基づいて最大 100% の割引が適用されます。詳細については、容量ベースの料金をご覧ください。

予約を作成して、BigQuery BI Engine の容量を購入します。予約は、予約の作成時に特定したプロジェクトに接続されます。BI Engine はこの容量を使用して、キャッシュに保存できるデータの量を決定します。BI Engine の最大予約サイズの詳細については、割り当てと上限をご覧ください。

必要なロール

予約の作成と削除に必要な権限を取得するには、プロジェクトに対して BigQuery リソース管理者roles/bigquery.resourceAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセス権の管理に関する記事をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

予約を作成する

オンデマンドで BI Engine の容量を予約するには、以下の手順を実行します。

コンソール

  1. [BigQuery] ページの [管理] で、[BI Engine] ページに移動します。

    [BI Engine] に移動

  2. [予約を作成] をクリックします。

  3. [予約の作成] ページで、[ステップ 1] の以下の手順を実行します。

    • プロジェクト名を確認します。
    • ロケーションを選択します。クエリ対象のデータセットのロケーションと一致する必要があります。
    • スライダーを調整して、予約するメモリ容量を指定します。 次の例では、容量を 2 GB に設定しています。現在の最大値は 250 GB です。プロジェクトでの最大予約容量の引き上げをリクエストできます。予約容量の引き上げには、ほとんどのリージョンで対応可能です。処理に 3 日間~1 週間かかることがあります。

      BI Engine の容量とロケーション

  4. [次へ] をクリックします。

  5. 優先テーブル(省略可)。優先テーブルを使用すると、BI Engine アクセラレーションの対象を特定のテーブルに限定できます。その他すべてのテーブルでは、通常の BigQuery スロットが使用されます。

    [テーブル ID] フィールドに、アクセラレーションの対象とするテーブルを PROJECT.DATASET.TABLE のパターンで指定します。

    次のように置き換えます。

    • PROJECT: 実際の Google Cloud プロジェクト ID
    • DATASET: データセット
    • TABLE: アクセラレーションの対象とするテーブル。
  6. [次へ] をクリックします。

  7. [ステップ 3] で、予約の詳細を確認してから、[作成] をクリックします。

予約を確認すると、[予約] ページに詳細が表示されます。

SQL

ALTER BI_CAPACITY SET OPTIONS DDL ステートメントを使用して、BI Engine 予約を作成または変更します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER BI_CAPACITY `PROJECT_ID.LOCATION_ID.default`
    SET OPTIONS (
      size_gb = VALUE,
      preferred_tables =
        ['TABLE_PROJECT_ID.DATASET.TABLE1',
        'TABLE_PROJECT_ID.DATASET.TABLE2']);
    

    次のように置き換えます。

    • PROJECT_ID: BI Engine アクセラレーションを利用するプロジェクトの ID(省略可)。省略すると、デフォルトのプロジェクトが使用されます。
    • LOCATION_ID: データをキャッシュに保存する必要があるロケーションregion- で始まります)。例: region-usregion-us-central1
    • VALUE: BI Engine 容量の予約の INT64 サイズ(ギガバイト単位、1~250 GB)。プロジェクトでの最大予約容量の引き上げをリクエストできます。予約容量の引き上げには、ほとんどのリージョンで対応可能です。処理に 3 日間~1 週間かかることがあります。VALUE を設定すると、既存の値が存在する場合は置き換えられます。NULL に設定すると、そのオプションの値が消去されます。
    • TABLE_PROJECT_ID.DATASET.TABLE: アクセラレーションを適用する参照テーブルのリスト(省略可)。TABLE_PROJECT_ID.DATASET.TABLE or DATASET.TABLE 形式で指定します。プロジェクトを省略すると、デフォルトのプロジェクトが使用されます。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

bq update コマンドを使用し、クエリ パラメータとしてデータ定義言語(DDL)ステートメントを指定します。

bq --project_id=PROJECT_ID update \
    --bi_reservation_size=SIZE \
    --location=LOCATION \
    --reservation

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • SIZE: メモリの予約容量(ギガバイト単位、1~250 GB)。プロジェクトでの最大予約容量の引き上げをリクエストできます。予約容量の引き上げには、ほとんどのリージョンで対応可能です。処理に 3 日間~1 週間かかることがあります。
  • LOCATION: クエリ対象のデータセットのロケーション

容量の見積もりと測定

BI Engine 予約の容量要件を見積もるには、次の手順を行います。

  1. TOTAL_LOGICAL_BYTES ビューを表示して、テーブルの論理サイズを確認し、そのサイズを最初の BI Engine 予約に使用します。例:

    SELECT
      SUM(TOTAL_LOGICAL_BYTES) / 1024.0 / 1024.0 / 1024.0 AS logical_size_gb
    FROM
      `region-us.INFORMATION_SCHEMA.TABLE_STORAGE`
    WHERE
      TABLE_NAME IN UNNEST(["Table1", "Table2"]);
    

    たとえば、合計 200 GiB のデータを含むテーブルセットに対するクエリの場合は、200 GiB の BI Engine 予約から始めることをおすすめします。使用可能なフィールドまたはパーティションのサブセットのみを使用する選択的なクエリでは、小さい予約サイズから始めることができます。

  2. BI Engine 予約と同じプロジェクトとリージョンで作成された、最適化が必要なすべてのクエリを実行します。目標は、最適化する必要があるワークロードを概算することです。負荷が増加すると、クエリを処理するためにより多くのメモリが必要になります。クエリの受信後に、データが BI Engine に読み込まれます。

  3. BI Engine RAM の予約を、Cloud Monitoring の bigquerybiengine 指標で使用されているバイト数(reservation/used_bytes)と比較します。

  4. 結果に基づいて予約容量を調整します。多くのユースケースでは、予約を小さくすることでクエリの大部分を高速化し、費用とリソースを節約できます。BI Engine の Monitoring の詳細については、BI Engine のモニタリングをご覧ください。

BI Engine の予約サイズには、次の要因が影響します。

  • BI Engine は、クエリの処理に必要な、頻繁にアクセスされる列と行のみをキャッシュに保存します。
  • 予約が完全に使用されると、BI Engine は最も長い間使用されていないデータをオフロードして、新しいクエリのために空き容量を増やそうとします。
  • 計算負荷の高い複数のクエリが同じデータセットを使用している場合、BI Engine はデータの追加コピーを読み込み、再分配してレスポンス時間を最適化します。

予約を変更する

既存の予約を変更する手順は次のとおりです。

コンソール

既存の予約でアクセラレーション対象のテーブルのセットを指定するには、次の手順を行います。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. BigQuery のナビゲーション メニューで、[BI Engine] をクリックします。

    プロジェクトが優先テーブルで構成されている場合、一連のテーブルが [優先テーブル] 列に表示されます。

    画像

  3. 編集する予約の行で、[アクション] 列のアイコンをクリックし、[編集] を選択します。

  4. [容量(GiB)] スライダーを、予約するメモリ容量に合わせます。[次へ] をクリックします。

  5. 優先テーブル: 既存の予約でアクセラレーション対象のテーブルセットを指定するには、[テーブル ID] フィールドに、アクセラレーションの対象とするテーブルを PROJECT.DATASET.TABLE のパターンで指定します。

    次のように置き換えます。

    • PROJECT: 実際の Google Cloud プロジェクト ID
    • DATASET: データセット
    • TABLE: アクセラレーションの対象とするテーブル。

    変更が反映されるまでには、10 秒ほどかかる場合があります。優先テーブルリスト内のテーブルのみが BI Engine アクセラレーションを使用できます。

    [次へ] をクリックします。

  6. 変更後の予約を確認します。同意する場合は、[更新] をクリックします。

SQL

ALTER BI_CAPACITY SET OPTIONS DDL ステートメントを使用して、BI Engine 予約を作成または変更できます。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER BI_CAPACITY `PROJECT_ID.LOCATION_ID.default`
    SET OPTIONS (
      size_gb = VALUE,
      preferred_tables =
        [`TABLE_PROJECT_ID.DATASET.TABLE1`,
        `TABLE_PROJECT_ID.DATASET.TABLE2`]);
    

    次のように置き換えます。

    • PROJECT_ID: BI Engine アクセラレーションを利用するプロジェクトの ID(省略可)。省略すると、デフォルトのプロジェクトが使用されます。
    • LOCATION_ID: データをキャッシュに保存する必要があるロケーションregion- で始まります)。例: region-usregion-us-central1
    • VALUE: BI Engine 容量の予約の INT64 サイズ(ギガバイト単位、1~250 GB)。プロジェクトでの最大予約容量の引き上げをリクエストできます。予約容量の引き上げには、ほとんどのリージョンで対応可能です。処理に 3 日間~1 週間かかることがあります。VALUE を設定すると、既存の値が存在する場合は置き換えられます。NULL に設定すると、そのオプションの値が消去されます。
    • TABLE_PROJECT_ID.DATASET.TABLE: アクセラレーションを適用する優先テーブルのリスト(省略可)。TABLE_PROJECT_ID.DATASET.TABLE or DATASET.TABLE 形式で指定します。プロジェクトを省略すると、デフォルトのプロジェクトが使用されます。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

予約を削除する

容量の予約を削除するには、以下の手順を実行します。

コンソール

  1. [BigQuery] ページの [管理] で、[BI Engine] ページに移動します。

    [BI Engine] に移動

  2. [予約] セクションで、予約を探します。

  3. [操作] 列で、予約の右側にある アイコンをクリックし、[削除] を選択します。

  4. [予約を削除しますか?] ダイアログで「DELETE」と入力して、[削除] をクリックします。

SQL

BI Engine の容量のオプションを設定します。

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    ALTER BI_CAPACITY `PROJECT_ID.LOCATION_ID.default`
    SET OPTIONS (
      size_gb = 0);
    

    次のように置き換えます。

    • PROJECT_ID: BI Engine アクセラレーションを利用するプロジェクトの ID(省略可)。省略すると、デフォルトのプロジェクトが使用されます。
    • LOCATION_ID: データをキャッシュに保存する必要があるロケーションregion- で始まります)。例: region-usregion-us-central1

    プロジェクト内のすべての容量予約を削除すると、そのプロジェクトでは BI Engine が無効になります。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

bq

DDL ステートメントをクエリ パラメータとして指定して、bq update コマンドを使用します。

bq --project_id="PROJECT_ID" \
update --reservation
    --bi_reservation_size=0 \
    --location=LOCATION

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID
  • LOCATION: クエリ対象のデータセットのロケーション

BI Engine の情報を検証する

INFORMATION_SCHEMA テーブルに対してクエリを実行すると、BI Engine の容量に関する情報を取得できます。

予約ステータスを確認する

優先テーブルのセットなど、予約のステータスを確認するには、SQL クエリを使用して INFORMATION_SCHEMA.BI_CAPACITIES ビューを表示します。次に例を示します。

SELECT
  *
FROM
  `<PROJECT_ID>.region-<REGION>.INFORMATION_SCHEMA.BI_CAPACITIES`;

Google Cloud コンソールでは、この SQL クエリの結果は次のようになります。

画像

予約の変更を表示する

特定の予約の変更履歴を表示するには、SQL クエリで INFORMATION_SCHEMA.BI_CAPACITY_CHANGES ビューを使用します。例:

SELECT
  *
FROM
  `<PROJECT_ID>.region-<REGION>.INFORMATION_SCHEMA.BI_CAPACITY_CHANGES`
ORDER BY
  change_timestamp DESC
LIMIT 3;

Google Cloud コンソールでは、この SQL クエリの結果は次のようになります。

change_timestamp project_id project_number を含む結果行

次のステップ