BigQuery 分析の概要

このドキュメントでは、BigQuery でのクエリ処理の概要とデータ分析に役立つ機能について説明します。

はじめに

BigQuery はフルマネージドのクラウドデータ ウェアハウスです。分析エンジンを搭載し、優れたスケーラビリティを提供します。大規模なデータセットに対して分析クエリを実行するように最適化されています。テラバイト規模のデータでも数秒でクエリを実行できます。また、ペタバイト規模のデータのクエリも数分で完了します。これにより、大規模なデータセットを効率的に分析し、ほぼリアルタイムで分析情報を取得できます。BigQuery によるクエリの処理方法と BigQuery の分析機能を理解すると、分析機能を最大限に活用できます。

分析の種類

BigQuery で使用できる分析機能は次のとおりです。

  • アドホック分析 - BigQuery は、BigQuery SQL 言語である標準 SQL を使用したアドホック分析をサポートしています。クエリは Google Cloud Console で実行できます。また、BigQuery と統合されているサードパーティ ツールで実行することもできます。

  • 地理空間分析 - 地理空間分析では、地理データ型と標準の SQL 地理関数を使用して、BigQuery で地理空間データを分析し、可視化できます。これらのデータ型と関数の詳細については、地理空間分析の概要をご覧ください。

  • 機械学習 - BigQuery ML を使用すると、BigQuery で標準 SQL クエリを使用して機械学習モデルを作成して実行できます。

  • ビジネス インテリジェンス - BigQuery BI Engine は、高速なインメモリ分析サービスです。BI Engine を使用すると、パフォーマンス、スケーリング、セキュリティ、データの鮮度を損なうことなく、高機能かつインタラクティブなダッシュボードとレポートを作成できます。

クエリ

BigQuery で分析を行う際の基本単位は SQL クエリです。BigQuery には、標準 SQL とレガシー SQL という 2 つの SQL 言語があります。推奨言語である標準 SQL は SQL:2011 をサポートし、地理空間分析または機械学習をサポートする拡張機能が含まれています。BigQuery は、さまざまなソースに格納されたデータのクエリもサポートしています。

データソース

BigQuery は、以下のタイプのデータソースのクエリをサポートしています。

  • ネイティブ データ - BigQuery ストレージに保存されているデータ。BigQuery にデータを読み込むことができます。また、データ操作言語ステートメントを使用するか、クエリ結果をテーブルに書き込むことでデータを生成できます。
  • 外部データ - 他の Google Cloud ストレージ サービス(Cloud Storage など)または他の Google Cloud データベース サービス(Spanner や Cloud SQL など)に保存されているデータ。外部ソースとの接続を設定する方法については、外部データソースの概要をご覧ください。
  • マルチクラウド データ - AWS や Azure などの複数のクラウド サービスに保存されているデータ。AWS と Azure ストレージとの接続の設定方法については、BigQuery Omni ドキュメントの入門ガイドをご覧ください。
  • 一般公開データセット - 独自のデータがない場合は、一般公開データセット マーケットプレイスで入手可能な任意のデータセットを分析できます。

クエリの種類

BigQuery にデータを読み込んだ後に、テーブル内のデータをクエリできます。BigQuery は次の 2 種類のクエリをサポートします。

デフォルトで、BigQuery はインタラクティブ クエリを実行します。つまり、クエリはすぐに実行されます。

BigQuery ではバッチクエリも提供されています。BigQuery はユーザーに代わって各バッチクエリをキューに格納し、アイドル状態のリソースが使用可能になると直ちに(通常は数分以内に)クエリを開始します。

以下を使用して、インタラクティブ クエリとバッチクエリを実行できます。

クエリジョブ

ジョブとは、データの読み込みデータのエクスポートデータのクエリデータのコピーなど、BigQuery がユーザーに代わって実行するアクションのことです。

Google Cloud コンソールまたは bq コマンドライン ツールを使用してデータの読み込み、エクスポート、クエリ、コピーを行うと、ジョブリソースが自動的に作成され、スケジュールが設定されて実行されます。また、読み込み、エクスポート、クエリ、コピーのジョブをプログラムで作成することもできます。プログラムでジョブを作成すると、BigQuery によってジョブがスケジュールされ、実行されます。

ジョブの実行には長い時間がかかる場合があるため、ジョブは非同期で実行され、ステータスをポーリングできます。リソースの一覧表示やメタデータの取得など、短時間のアクションは、ジョブリソースでは管理されません。

クエリの保存と共有

BigQuery では、クエリの保存や、他のユーザーとのクエリの共有が可能です。

クエリを保存する際には、非公開(自分にのみ表示可能)、プロジェクト レベルで共有(特定のプリンシパルに表示可能)、一般公開(任意のユーザーに表示可能)のいずれかを選択できます。詳細については、クエリの保存と共有をご覧ください。

クエリ処理

BigQuery では、コンピューティングとストレージが分離されています。連携してデータを整理し、巨大なデータセットに対して効率的なクエリを実行できるように設計されています。

クエリを実行すると、BigQuery は実行ツリーを生成し、クエリをいくつかのステージに分割します。各ステージには、並行して実行できるステップが含まれます。ステージは、高速分散シャッフル ティアを使用して、ステージのワーカーから生成された中間データを格納し、相互に通信を行います。シャッフル ティアでは、可能であればペタビット ネットワークや RAM などのテクノロジーを利用して、ワーカーノードにデータをすばやく移動します。

以下では、クエリ処理の主なコンセプトについて説明します。

  • 実行ツリー - クエリがステージに分割されます。ステージには、ワーカーが並列して実行可能なステップが含まれます。
  • シャッフル ティア - シャッフル ティアには、ステージ間の中間データが保存されます。
  • クエリプラン - BigQuery でクエリの実行に必要なすべての情報が取得されると、クエリプランが生成されます。このクエリプランはコンソールに表示され、クエリのトラブルシューティングや最適化に役立ちます。
  • クエリのモニタリングと動的プランニング - クエリプラン自体の作業を実行するワーカーに加えて、別のワーカーがシステム全体における作業の進行状況をモニタリングし、指示します。BigQuery は、クエリの進行状況に応じてクエリプランを動的に調整し、さまざまなステージの結果に適応させることもできます。

クエリが完了すると、結果が永続ストレージに書き込まれ、ユーザーに返されます。これにより、次回クエリが実行されたときに BigQuery はキャッシュ内の結果を返すことができます。

クエリの最適化

クエリが完了すると、コンソールでクエリプランを確認するか、INFORMATION_SCHEMA ビューまたは Jobs API を介して実行の詳細をリクエストできます。クエリプランは、概要統計や詳細なステップ情報など、クエリステージの詳細を提供します。

クエリプランの詳細を使用して、クエリのパフォーマンスを向上させる方法を特定できます。たとえば、実行の詳細により、特定のステージで他のステージよりも多くの出力が書き込まれていることが判明した場合は、クエリの実行前にフィルタリングを行う必要がある可能性があります。

クエリのモニタリング

モニタリングとロギングは、クラウドで信頼性の高いアプリケーションを実行するために不可欠です。ワークロードが大きい場合やミッション クリティカルな場合、BigQuery ワークロードも例外ではありません。BigQuery には、BigQuery の使用状況のモニタリングに役立つさまざまな指標、ログ、メタデータ ビューが用意されています。

クエリの料金

BigQuery には、分析用の次の 2 つの料金モデルが用意されています。

  • オンデマンド料金: クエリでスキャンされたデータに対して料金が発生します。プロジェクトごとにクエリの処理容量が固定されており、処理したバイト数に基づいて費用が設定されます。

  • 定額料金: 専用のクエリ処理容量を購入します。

2 つの料金モデルと、定額料金の予約について詳しくは、予約の概要をご覧ください。

割り当てとクエリ費用を抑える

BigQuery は、実行中のクエリに対してプロジェクト レベルの割り当てを強制します。クエリ割り当ての詳細については、割り当てと上限をご覧ください。

クエリ費用を抑えるために、BigQuery は、カスタム割り当てと請求アラートを含むいくつかのオプションを提供しています。詳細については、カスタムコスト管理の作成をご覧ください。

データ分析機能

BigQuery は記述的分析と予測的分析の両方をサポートしています。コンソールを使用してデータを直接クエリし、統計的質問の回答を取得することや、BigQuery と統合する Tableau や Looker などのツールを使用して傾向や異常値などのデータを視覚的に探索することが可能です。

分析ツールの統合

BigQuery でクエリを実行するだけでなく、さまざまな分析ツールやビジネス インテリジェンス ツールと BigQuery と統合することで、さらに詳しい分析を行うことができます。

以下にツールの一部を示します。

  • Google データポータル - クエリを実行した後、BigQuery コンソールから直接 Google データポータルを起動できます。クエリから返されたデータには、Google データポータル コンソールから自動的にアクセスできるようになります。ここで、可視化や探索を行うことができます。Google データポータルの詳細については、データポータルの概要をご覧ください。

  • コネクテッド シート - BigQuery コンソールから直接、コネクテッド シートを起動することもできます。コネクテッド シートは、リクエストまたは定義済みのスケジュールに従って、BigQuery クエリをユーザーに代わって実行します。クエリの結果はスプレッドシートに保存され、分析と共有に利用できます。コネクテッド シートの詳細については、コネクテッド シートの使用をご覧ください。

  • Looker - Looker は、ビジネス インテリジェンス、データ アプリケーション、組み込み型アナリティクス向けのエンタープライズ プラットフォームです。Looker プラットフォームは、BigQuery を含む多数のデータストアに対応しています。Looker を BigQuery と接続する方法については、Looker の使用をご覧ください。

サードパーティ製ツールの統合

また、BigQuery 用のサードパーティの分析ツールもあります。たとえば、Tableau を BigQuery データに接続し、その可視化ツールを使用して分析を共有できます。

ODBC ドライバと JDBC ドライバが利用可能です。これらのドライバを使用して、アプリケーションを BigQuery と統合できます。このドライバの目的は、既存のツールとインフラストラクチャで BigQuery の機能を活用できるようにすることです。最新リリースと既知の問題については、BigQuery 用の ODBC ドライバと JDBC ドライバをご覧ください。

pandas-gbq などの pandas ライブラリを使用すると、Jupyter ノートブックで BigQuery データを操作できます。このライブラリの詳細、BigQuery Python クライアント ライブラリを使用する場合との違いについては、pandas-gbq との比較をご覧ください。

BigQuery 分析とさまざまな技術パートナーの一覧については、BigQuery プロダクト ページのパートナーのリストをご覧ください。

次のステップ