BI Engine とは
BigQuery BI Engine は、頻繁に使用するデータをインテリジェントにキャッシュに保存することで、BigQuery の多くの SQL クエリを加速する高速なメモリ内分析サービスです。BI Engine は、データ可視化ツールにより作成されたものを含む任意のソースから SQL クエリを加速し、継続的な最適化のためにキャッシュ テーブルを管理できます。これにより、手動の調整やデータ階層化を行わずにクエリのパフォーマンスを向上させることができます。クラスタリングとパーティショニングを使用すると、BI Engine の大規模なテーブルのパフォーマンスをさらに最適化できます。
たとえば、ダッシュボードに直前の四半期のデータのみを表示する場合、最新のパーティションのみがメモリに読み込まれるように、テーブルを時間でパーティショニングすることを検討してください。また、マテリアライズド ビューと BI Engine の利点を組み合わせることもできます。これは特に、マテリアライズド ビューを使用して BI Engine の構造を最適化するためにデータを結合およびフラット化する場合に使用します。
BI Engine には次の利点があります。
- BigQuery API: BI Engine は BigQuery API と直接統合されます。BI ソリューションまたは REST ドライバや JDBC ODBC ドライバなどの標準メカニズムを介して BigQuery API と連携するカスタム アプリケーションは、何の変更もなしで BI Engine を使用できます。
- ベクトル化ランタイム: BI Engine SQL インターフェースでは、BI Engine はベクトル処理と呼ばれる最新の手法を採用しています。実行エンジンでベクトル化された処理を使用すると、データのバッチを一度に処理することで、最新の CPU アーキテクチャをより効率的に利用できます。BI Engine はさらに、高度なデータ エンコード(具体的には、辞書のランレングス圧縮)を使用して、メモリ内レイヤに保存されているデータをさらに圧縮します。
- シームレスな統合: BI Engine は、承認済みビュー、列レベルのセキュリティ、データ マスキングなど、BigQuery 機能やメタデータと連携します。
- 予約: 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 ダッシュボードに使用されるものを含め、多くの 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 の料金ページをご覧ください。
次のステップ
- BI Engine 予約の作成方法については、BI Engine の容量を予約するをご覧ください。
- 優先テーブルを指定する方法については、BI Engine の優先テーブルをご覧ください。
- BI Engine の使用率を理解するには、Cloud Monitoring で BI Engine をモニタリングするをご覧ください。
- BI Engine の最適化関数について学習する。
- BI Engine の使用方法については、以下をご覧ください。