BigQuery BI Engine SQL インターフェースの概要

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

BigQuery BI Engine は、BigQuery に保存されているデータを分析できる、高速なメモリ内分析サービスです。クエリ応答時間は 1 秒未満で、同時実行性にも優れています。

BI Engine SQL インターフェースは BI Engine を拡張して、Looker、Tableau、Power BI、カスタム アプリケーションなどの他のビジネス インテリジェンス(BI)ツールに統合されるため、データ探索や分析がスピードアップします。このページでは、BI Engine SQL インターフェースの概要と、BI Engine のこのプレビュー版に提供される拡張機能について説明します。

プレビューへのアクセスのリクエスト

このプレビュー フェーズでの BI Engine SQL インターフェースへのアクセスは、登録プロセスを通じて提供されます。アクセスするには、BI Engine プレビュー登録フォームから、プロジェクトの詳細を記載してお申し込みください。プロジェクトが登録されると、メールで通知されます。

プレビュー中の予約の増加

デフォルトのサイズ(100 GB)を超える追加のメモリ予約が必要な場合は、増加をリクエストできます。予約の増加はケースバイケースで評価され、一部のリージョンでのみ使用できます。

BI Engine のアーキテクチャ

BI Engine SQL インターフェースは、既存の Google データポータル アーキテクチャ用の 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. メタデータ: メタデータには、テーブルとビューの定義、スキーマ定義、詳細な権限が含まれます。
  4. 予約: BI Engine の予約では、プロジェクトの課金レベルでメモリ割り当てを管理します。BI Engine は、クエリまたはスキャンされる列とパーティションのみをキャッシュに保存します。テーブル全体がキャッシュに保存されることはありません。
  5. 分散型インメモリ エンジン: BI Engine は分散型インメモリ実行エンジンで、大幅に大きなメモリ予約を割り当てることができます。

クエリの最適化と高速化

BigQuery と拡張 BI Engine では、SQL クエリ用に生成されたクエリプランがサブクエリに分割されます。サブクエリには、データのスキャン、フィルタリング、集計などのさまざまなオペレーションが含まれ、多くの場合、シャードでの実行単位になります。

BigQuery でサポートされている SQL クエリはすべて BI Engine SQL インターフェースによって正しく実行されますが、BI Engine SQL インターフェースのプレビュー版では、特定のサブクエリのみが最適化されます。特に、ストレージからデータをスキャンし、フィルタ、コンピューティング、集計、並べ替え、特定の種類の結合などのオペレーションを行うリーフレベルのサブクエリに最適化されています。BI Engine によってまだ完全に高速化されてないその他のサブクエリは、実行のために BigQuery に戻されます。

このように選択的に最適化することで、実行時間の大半が元データを処理するリーフレベルのサブクエリで使われるため、よりシンプルな BI またはダッシュボード タイプのクエリ(サブクエリがより少なくなる)は、BI Engine で最も効果があります。

制限事項

次のリストでは、このプレビュー版の BI Engine を使用する際に、クエリの高速化がいつどのように行われるかについて説明しています。

  • リーフレベルのサブクエリ内では、高速化は標準 SQL 関数と演算子に制限されます。
  • このプレビュー版では、BI Engine の容量が Google Cloud プロジェクトごとに最大 100 GB までに制限されますが、予約容量の引き上げをリクエストすることが可能です。
  • BigQuery ストリーミングの取り込みは、プレビュー中はサポートされていません。
  • 行数と行数には次の制限があります。
    • 1 つのテーブルのみを参照する単純なクエリ(GROUP-BY クエリや FILTER クエリなど)は、主に予約サイズによって制限されます。
    • 結合では、高速化は INNER 結合と LEFT OUTER 結合によるリーフレベルのサブクエリに制限されます。ここで、大きな(ファクト)テーブルは、最大 4 つの小さく、パーティション分割されていない(ディメンション)テーブルと結合されます。各テーブルは参照される列ごとに最大 500 万行または 5 GB のサイズがあります。
  • ワイルドカード テーブルを参照するクエリはサポートされていません。
  • BI Engine のこのプレビュー版は、すべてのリージョンで利用できるわけではありません。詳細については、サポートされているリージョンをご覧ください。

モニタリングと診断

このセクションでは、BI Engine についての統計情報を取得する方法と、BI Engine が Cloud Monitoring と統合される方法について説明します。

高速化の統計情報

BI Engine に関する詳細な統計情報は、Job Statistics API を使用して確認できます。bq コマンドライン ツールを使用して、BI Engine 高速化クエリに関連する統計情報をフェッチできます。

BI Engine アクセラレーションが有効化されると、次の 3 つのモードのいずれかでクエリを実行できます。


DISABLED
BI Engine はアクセラレーションを無効にしました。biEngineReasons は、より詳細な理由を指定します。クエリは BigQuery 実行エンジンを使用して実行されました。

PARTIAL
クエリの一部は BI Engine を使用して高速化されました。クエリの最適化と高速化で説明されているように、一般にクエリプランは複数のサブクエリに分割されます。この BI Engine のプレビューは、ダッシュボードで通常使用される一般的なタイプのサブクエリ パターンをサポートしています。クエリが複数のサブクエリで構成されている場合、サポートされるユースケースであるのはごく一部で、BI Engine は通常の BigQuery エンジンを使用して残りのサブクエリを実行します。残りのサブクエリは、BI Engine アクセラレーションを受け取りません。この場合、BI Engine は PARTIAL アクセラレーション コードを返し、biEngineReasons を使用して他のサブクエリを高速化させない理由を代入します。

 FULL
 
クエリの全体は BI Engine を使用して高速化されました。

BI Engine で高速化されたクエリに関連付けられている統計情報を取得するには、次の bq コマンドライン ツール コマンドを実行します。

bq show --format=prettyjson -j job_id

プロジェクトで BI Engine アクセラレーションが有効になっている場合、出力には新しいフィールド biEngineStatistics が生成されます。サンプルのジョブレポートを次に示します。

 "statistics": {
    "creationTime": "1602175128902",
    "endTime": "1602175130700",
    "query": {
      "biEngineStatistics": {
        "biEngineMode": "DISABLED",
        "biEngineReasons": [
          {
            "code": "UNSUPPORTED_SQL_TEXT",
            "message": "Detected unsupported join type"
          }
        ]
      },

BiEngineStatistics フィールドの詳細については、ジョブ参照をご覧ください。

Cloud Monitoring

BI Engine は Cloud Monitoring と統合され、モニタリングとアラートの目的で重要な指標を表示します。モニタリング対象の指標は次のとおりです。

リソースの種類 指標名 説明
プロジェクト 予約合計バイト数 1 つの Cloud プロジェクトに割り当てられた合計容量。
プロジェクト 予約使用バイト数 1 つの Cloud プロジェクトで使用される合計容量。

フィードバックとアップデート

プレビューに登録すると、ヘルプグループに質問やコメントを投稿できます。また、このグループを使用して、プレビュー フェーズで進行中の改善点や機能に関する最新情報を提供することもできます。

料金

現在の料金モデルは、BI Engine の料金ページをご覧ください。

サポートされるリージョン

BigQuery と同様に、BI Engine はリージョン リソースであり、マルチリージョン リソースです。 BI Engine では、BigQuery 内のデータがあるのと同じリージョンでデータが処理されます。

BI Engine SQL インターフェースのプレビュー フェーズでは、次のロケーションがサポートされます。

リージョン ロケーション

リージョンの説明 リージョン名
南北アメリカ
ロサンゼルス us-west2
北バージニア us-east4
オレゴン us-west1
サウスカロライナ us-east1
ヨーロッパ
ベルギー europe-west1
アジア太平洋
シンガポール asia-southeast1
東京 asia-northeast1

マルチリージョン

マルチリージョンの説明 マルチリージョン名
欧州連合の加盟国内のデータセンター1 EU
米国内のデータセンター US

1 EU マルチリージョン内のデータは europe-west2(ロンドン)や europe-west6(チューリッヒ)のデータセンターには保存されません。