BI Engine とは

BigQuery BI Engine は、頻繁に使用するデータをインテリジェントにキャッシュに保存することで、BigQuery の多くの SQL クエリを高速化する高速なメモリ内分析サービスです。データ可視化ツールにより作成されたものを含む任意のソースからの SQL クエリを高速化し、継続的な最適化のためにキャッシュ テーブルを管理します。これにより、手動調整やデータ階層化を行わずに、クエリのパフォーマンスを向上させることができます。クラスタリングパーティショニングを使用すると、BI Engine で大規模なテーブルのパフォーマンスをさらに最適化できます。

たとえば、ダッシュボードに直前の四半期のデータのみを表示する場合は、最新のパーティションのみがメモリに読み込まれるように、テーブルを時間で分割することを検討します。また、マテリアライズド ビューと BI Engine のメリットを組み合わせることもできます。これは、マテリアライズド ビューを使用してデータを結合、フラット化して BI Engine の構造を最適化する場合に特に効果的です。

BI Engine には次の利点があります。

  1. BigQuery API: BI Engine は BigQuery API と直接統合されます。BI ソリューションまたは REST ドライバや JDBC ODBC ドライバなどの標準メカニズムを介して BigQuery API と連携するカスタム アプリケーションは、変更なしで BI Engine を使用できます。
  2. ベクトル化ランタイム: BI Engine SQL インターフェースでは、BI Engine はベクトル処理と呼ばれる最新の手法を採用しています。実行エンジンでベクトル化された処理を使用すると、データのバッチを一度に処理することで、最新の CPU アーキテクチャをより効率的に利用できます。BI Engine はさらに、高度なデータ エンコード(具体的には、辞書のランレングス圧縮)を使用して、メモリ内レイヤに保存されているデータをさらに圧縮します。
  3. シームレスな統合: BI Engine は、承認済みビュー、列レベルのセキュリティ、データ マスキングなど、BigQuery 機能やメタデータと連携します。
  4. 予約: BI Engine の予約では、プロジェクトのロケーション レベルでメモリ割り当てを管理します。BI Engine は、クエリ対象の特定の列またはパーティションをキャッシュに保存し、テーブル内でそれらを「優先」とマークします。

BI Engine SQL インターフェースについて

BI Engine SQL インターフェースにより BI Engine が拡張され、Looker、Tableau、Power BI、カスタム アプリケーションなどの他のビジネス インテリジェンス(BI)ツールと連携して、データ探索と分析を高速化できます。このページでは、BI Engine SQL インターフェースの概要と、BI Engine で使用できる拡張機能について説明します。

BI Engine のアーキテクチャ

BI Engine のユースケース

BI Engine は、BI ダッシュボードに使用される SQL クエリを含め、多くの SQL クエリを大幅に高速化できます。クエリに必要なテーブルを特定してから優先テーブルとマークする場合、高速化が最も効果的です。BI Engine を使用するには、BI Engine 専用のストレージ容量を定義する予約を作成します。BigQuery は、プロジェクトの使用パターンに基づいてキャッシュに保存するテーブルを決定できます。また、特定のテーブルにマークを付けて、他のトラフィックが高速化を妨げないようにすることもできます。

BI Engine は、次のユースケースで役立ちます。

  • BI ツールを使用してデータを分析する: BI Engine の SQL インターフェースは、BigQuery コンソール、クライアント ライブラリ、または API、ODBC コネクタまたは JDBC コネクタのいずれで実行するかに関係なく、BigQuery クエリを高速化できます。これにより、組み込みの接続(API)やコネクタを介して BigQuery に接続するダッシュボードのパフォーマンスが大幅に向上します。
  • 最も頻繁に照会される特定のテーブルがある場合: BI Engine では、高速化する特定の優先テーブルを指定できます。これは、最も頻繁に照会されるテーブルのサブセットがある場合や、可視性の高いダッシュボードに使用される場合に便利です。

次のような場合には、BI Engine がニーズに合わない可能性があります。

  • クエリでワイルドカードを使用する: ワイルドカード テーブルを参照するクエリは BI Engine でサポートされておらず、高速化のメリットはありません。

  • BI Engine でサポートされていない BigQuery 機能に大きくに依存している: BI Engine では、ビジネス インテリジェンス(BI)ツールを BigQuery に接続するときにはほとんどの SQL 関数と演算子がサポートされますが、外部テーブルや SQL 以外のユーザー定義関数など、サポートされていない機能があります。

BI Engine に関する考慮事項

BI Engine の構成方法を決定する際には、次の点を考慮してください。

特定のクエリの高速化を確認する

特定のクエリセットが常に高速化されるようにするには、BI Engine 予約を使用して別のプロジェクトを作成します。そのためには、そのプロジェクトの BI Engine 予約が、それらのクエリで使用されるすべてのテーブルのサイズに十分対応していることを確認し、それらのテーブルを BI Engine の優先テーブルとして指定します。 そのプロジェクトで実行する必要があるのは、高速化が必要なクエリのみです。

結合を最小化する

BI Engine は、事前に結合されたデータまたは事前に集計されたデータと、少数の結合でのデータで最適に動作します。これは、小さいディメンション テーブルと結合された大きなファクト テーブルをクエリする場合など、結合の片側が大きくもう一方がはるかに小さい場合に特に当てはまります。BI Engine を、結合を行って単一の大規模なフラット テーブルを生成するマテリアライズド ビューと組み合わせることができます。この場合、すべてのクエリで同じ結合を実行する必要はありません。

BI Engine の影響を把握する

BI Engine の使用率を確認するには、Cloud Monitoring で BI Engine をモニタリングするを確認するか、INFORMATION_SCHEMA.BI_CAPACITIES ビューと INFORMATION_SCHEMA.BI_CAPACITY_CHANGES ビューに対してクエリを実行します。最も正確な比較を行うために、BigQuery の [キャッシュされた結果を使用] オプションを無効にしてください。詳細については、キャッシュに保存されているクエリ結果を使用するをご覧ください。

割り当てと上限

BI Engine に適用される割り当てと上限については、BigQuery の割り当てと上限をご覧ください。

料金

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

次のステップ