BI Engine の優先テーブル

BigQuery BI Engine の優先テーブル機能を使用すると、BI Engine による高速化を特定のテーブルに限定できます。その他のテーブルに対するクエリには、通常の BigQuery スロットが使用されます。たとえば、優先テーブルを使用すると、ビジネスにとって重要なテーブルとダッシュボードのみを高速化できます。

プロジェクトに、すべての優先テーブルを保持するのに十分な RAM がない場合は、BI Engine が最近アクセスされていないパーティションと列をオフロードします。高速化を必要とする新しいクエリのためにメモリが解放されます。

優先テーブルを指定する

優先テーブルのセットを指定するには、次のオプションを使用できます。

  • Google Cloud コンソール
  • SQL のデータ定義言語(DDL)ステートメント

Google Cloud コンソールで優先テーブルを指定する

新しい予約を作成するとき、または既存の予約を編集するときに、優先テーブルのセットを指定できます。BI Engine の予約を含むプロジェクトからテーブルを選択するか、他の BigQuery テーブルを選択できます。

新しい予約に優先テーブルを指定する

新しい予約を作成するときに高速化用のテーブルのセットを指定するには、次の操作を行います。

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

    [BigQuery] に移動

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

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

  4. [予約を作成] ページで、[ロケーション] と [容量(GiB)] のオプションを指定し、[次へ] をクリックします。

    [優先テーブル(省略可)] セクションが表示されます。

  5. [テーブル ID] フィールドに、パターン PROJECT.DATASET.TABLE を使用して高速化用のテーブルを指定します。

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

    • PROJECT: 実際の Google Cloud プロジェクト ID
    • DATASET: データセット
    • TABLE: 高速化用のテーブル。
  6. [次へ] をクリックします。

  7. 優先テーブルを使用して予約を作成するには、[作成] をクリックします。

既存の予約に優先テーブルを指定する

既存の予約で高速化用のテーブルのセットを指定するには、次の操作を行います。

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

    [BigQuery] に移動

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

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

    画像

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

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

SQL を使用して優先テーブルを指定する

ALTER BI_CAPACITY SET OPTIONS DDL ステートメントを使用して、優先テーブルと予約サイズのセットを変更できます。

ALTER BI_CAPACITY `<PROJECT_ID>.region-<REGION>.default`
SET OPTIONS (
  size_gb = 100,
  preferred_tables =
    ['TABLE_PROJECT_ID.DATASET.TABLE1',
    'TABLE_PROJECT_ID.DATASET.TABLE2']);

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

  • TABLE_PROJECT_ID: 高速化用のテーブルを含む Google Cloud プロジェクト ID
  • DATASET: 高速化用のテーブルを含むデータセット
  • TABLE#: 高速化用のテーブル。

SQL で検証する

優先テーブルのセットなど、予約のステータスを確認するには、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 を含む結果行

制限事項

BI Engine の優先テーブルには次の制限があります。

  • 優先テーブルの予約リストにビューを追加することはできません。BI Engine の優先テーブルは、テーブルのみをサポートします。
  • マテリアライズド ビューへのクエリが高速化されるのは、マテリアライズド ビューとそのベーステーブルの両方が優先テーブルリストに含まれている場合のみです。
  • 高速化用のパーティションまたは列の指定はサポートされていません。
  • JSON 型の列はサポートされていないため、BI Engine によって高速化されません。
  • 高速化するには、JOIN クエリ内のすべてのテーブルが優先テーブルリストに含まれている必要があります。優先リストに含まれていないテーブルが 1 つでも、そのクエリで BI Engine を使用することはできません。
  • 一般公開データセットは、Google Cloud コンソールではサポートされていません。一般公開テーブルを優先テーブルとして追加するには、API または DDL を使用します。

料金

BI Engine の料金については、BI Engine の料金のページをご覧ください。

次のステップ