BigQuery 分析の概要
このドキュメントでは、BigQuery がクエリを処理する方法と、データ分析に役立ついくつかの機能の概要について説明します。
BigQuery は、大規模なデータセットで(数テラバイトのデータを数秒で、数ペタバイトのデータを数分で)分析クエリを実行するように最適化されています。その機能とクエリの処理方法を理解することで、データ分析への投資を最大限に活用できます。
Google Cloud コンソールで BigQuery のデータ分析機能を直接使用するには、[ツアーを見る] をクリックします。
分析ワークフロー
BigQuery は、次のようなデータ分析ワークフローをサポートしています。
アドホック分析。BigQuery は、BigQuery の SQL 言語である GoogleSQL を使用して、アドホック分析をサポートします。Google Cloud コンソール上で、または BigQuery と統合するサードパーティ ツールを通じてクエリを実行できます。
地理空間分析。BigQuery では、地理データ型と GoogleSQL 地理関数を使用して地理空間データの分析と可視化を行うことができます。これらのデータ型と関数の詳細については、地理空間分析の概要をご覧ください。
機械学習。BigQuery ML は、GoogleSQL クエリを使用して、BigQuery で機械学習(ML)モデルを作成および実行できます。
ビジネス インテリジェンス。BigQuery BI Engine は、パフォーマンス、スケーラビリティ、セキュリティ、データの鮮度を損なうことなく、高機能かつインタラクティブなダッシュボードやレポートを構築できる、高速なインメモリ分析サービスです。
クエリ
BigQuery で分析を行う際の基本単位は SQL クエリです。BigQuery には、GoogleSQL とレガシー SQL という 2 つの SQL 言語があります。GoogleSQL が推奨言語です。SQL:2011 をサポートし、地理空間分析や ML をサポートする拡張機能が含まれています。
以降のセクションでは、BigQuery がデータクエリをサポートし、実行する方法について説明します。
データソース
BigQuery では、次のタイプのデータソースに対してクエリを実行できます。
BigQuery に格納されるデータ。分析のために BigQuery にデータを読み込むことができます。データ操作言語(DML)ステートメントを使用するか、クエリ結果をテーブルに書き込むことで、データを生成することもできます。シングル リージョン ロケーションまたはマルチリージョン ロケーションに保存されているデータに対してクエリを実行できます。しかし、複数のロケーションに対しては、1 つがシングル リージョン ロケーションで、もう 1 つがそのシングル リージョン ロケーションを含むマルチリージョン ロケーションであっても、クエリを実行することはできません。詳細については、ロケーション、予約、ジョブをご覧ください。
外部データ。他の Google Cloud Storage サービス(Cloud Storage など)やデータベース サービス(Spanner や Cloud SQL など)など、さまざまな外部データソースに対してクエリを実行できます。外部ソースとの接続を設定する方法については、外部データソースの概要をご覧ください。
マルチクラウド データ。AWS や Azure などの他のパブリック クラウドに保存されているデータをクエリできます。Amazon S3 または Azure blob ストレージへの接続を設定する方法については、BigQuery Omni の概要をご覧ください。
一般公開データセット。独自のデータがない場合は、一般公開データセット マーケットプレイスで入手可能な任意のデータセットを分析できます。
クエリジョブ
ジョブとは、データの読み込み、データのエクスポート、データのクエリ、データのコピーなど、BigQuery がユーザーに代わって実行するアクションのことです。
Google Cloud コンソールまたは bq ツールを使用してこれらのジョブのいずれかを実行すると、ジョブリソースが自動的に作成され、スケジュールが設定されて実行されます。また、読み込み、エクスポート、クエリ、コピーのジョブをプログラムで作成することもできます。プログラムでジョブを作成すると、BigQuery によってジョブがスケジュールされ、実行されます。
ジョブの実行には長い時間がかかる場合があるため、ジョブは非同期で実行され、ステータスをポーリングできます。リソースの一覧表示やメタデータの取得など、短時間のアクションは、ジョブリソースでは管理されません。
クエリの種類
次のいずれかの種類のクエリジョブを使用して、BigQuery データをクエリできます。
- インタラクティブなクエリジョブ。デフォルトでは、BigQuery はインタラクティブ(オンデマンド)クエリジョブをできるだけ早く実行します。
継続的クエリジョブ(プレビュー)。これらのジョブでは、クエリが継続的に実行されるため、BigQuery で受信データをリアルタイムで分析し、結果を BigQuery テーブルに書き込むか、Bigtable または Pub/Sub にエクスポートできます。この機能を使用すると、分析情報の作成と即時対応、リアルタイムの ML 推論の適用、イベント ドリブン データ パイプラインの構築など、時間に敏感なタスクを実行できます。
バッチ クエリ ジョブ。これらのジョブでは、BigQuery がユーザーに代わって各バッチクエリをキューに入れ、アイドル状態のリソースが使用可能になると(通常は数分以内)直ちにクエリを開始します。
クエリジョブは、次の方法で実行できます。
- Google Cloud コンソールでクエリを作成して実行します。
- bq コマンドライン ツールの
bq query
コマンドを実行します。 - プログラマティックな方法で BigQuery REST API の
jobs.query
またはjobs.insert
メソッドを呼び出します。 - BigQuery クライアント ライブラリを使用します。
保存された共有クエリ
BigQuery では、クエリの保存や、他のユーザーとのクエリの共有が可能です。
クエリを保存する際には、非公開(自分にのみ表示可能)、プロジェクト レベルで共有(特定のプリンシパルに表示可能)、一般公開(任意のユーザーに表示可能)のいずれかを選択できます。詳細については、保存したクエリを操作するをご覧ください。
BigQuery がクエリを処理する方法
BigQuery がクエリを実行すると、いくつかのプロセスが発生します。
実行ツリー。クエリを実行すると、BigQuery は実行ツリーを生成し、クエリをいくつかのステージに分割します。これらのステージには、並行して実行できるステップが含まれています。
シャッフル ティア。ステージは、高速分散シャッフル ティアを使用して、ステージのワーカーから生成された中間データを格納し、相互に通信を行います。可能な場合、シャッフル ティアでは、ペタビット ネットワークや RAM などのテクノロジーを活用して、ワーカーノードにデータをすばやく移動します。
クエリプラン。BigQuery は、クエリの実行に必要なすべての情報を取得したら、クエリプランを生成します。このプランを Google Cloud コンソールで表示し、クエリのパフォーマンスのトラブルシューティングまたは最適化に使用できます。
クエリのモニタリングと動的な計画。クエリプランの作業自体を実行するワーカーに加え、別のワーカーがシステム全体の作業の進捗を監視、監督します。クエリが進行すると、BigQuery はさまざまなステージの結果に合わせてクエリプランを動的に調整します。
クエリ結果。クエリが完了すると、BigQuery は結果を永続ストレージに書き込み、ユーザーに返します。この設計により、BigQuery が次回クエリを実行するときに、キャッシュに保存された結果を提供できます。
クエリの同時実行とパフォーマンス
同じデータに対して繰り返し実行されるクエリのパフォーマンスは、ミリ秒単位で変化することがあります。BigQuery 環境の共有特性のために、またはクエリの実行中に BigQuery がクエリプランを動的に調整するため、パフォーマンスの変動が生じることがあります。多くのクエリが同時に実行されている一般的な使用中のシステムの場合、BigQuery では複数のプロセスを使用してクエリのパフォーマンスの変動を平準化します。
BigQuery は多くのクエリを並行して実行するため、クエリをキューに入れる必要はほとんどありません。
ビジーなシステムでは、キューがクエリに滞在する時間が不明確であるため、キューはパフォーマンスが予測しにくい主要な原因となります。キュー内のクエリの時間は、クエリ自体の品質よりも、実行中のまたはキュー内のその他のクエリにより大きく依存する可能性があります。
クエリが開始し完了すると、BigQuery は新しいクエリと実行中のクエリの間でリソースを適正に再分散します。このプロセスにより、クエリのパフォーマンスは、クエリの送信順序ではなく、特定の時点で実行されるクエリの数に依存します。
クエリの最適化
クエリが完了すると、Google Cloud コンソールでクエリプランを表示できます。INFORMATION_SCHEMA.JOBS*
ビューや jobs.get
REST API メソッドを使用して、実行の詳細をリクエストすることもできます。
クエリプランには、クエリのステージとステップの詳細が含まれます。これらの詳細は、クエリのパフォーマンスを改善する方法を特定する際に役立ちます。たとえば、あるステージの書き込み出力が他のステージよりもはるかに多い場合は、クエリの早い段階でフィルタリングする必要がある可能性があります。
クエリプランとクエリの最適化の詳細については、次のリソースをご覧ください。
- クエリプランの詳細と、プランの情報を使用してクエリのパフォーマンスを改善する例については、クエリプランとタイムラインをご覧ください。
- クエリの最適化に関する一般的な情報については、クエリ パフォーマンスの最適化の概要をご覧ください。
クエリのモニタリング
モニタリングとロギングは、クラウドで信頼性の高いアプリケーションを実行するために不可欠です。ワークロードが大きい場合やミッション クリティカルな場合、BigQuery ワークロードも例外ではありません。BigQuery には、BigQuery の使用状況のモニタリングに役立つさまざまな指標、ログ、メタデータ ビューが用意されています。
詳しくは、次のリソースをご覧ください。
- BigQuery のモニタリング オプションの詳細については、BigQuery モニタリングの概要をご覧ください。
- 監査ログとクエリの動作を分析する方法については、BigQuery 監査ログをご覧ください。
クエリの料金
BigQuery には、分析用の次の 2 つの料金モデルが用意されています。
- オンデマンド料金。 クエリでスキャンされたデータに対して料金が発生します。プロジェクトごとに固定のクエリ処理容量があり、費用は処理されたバイト数に基づきます。
- 容量ベースの料金。 専用のクエリ処理容量を購入します。
2 つの料金モデルと、容量ベースの料金の予約について詳しくは、予約の概要をご覧ください。
割り当てとクエリ費用を抑える
BigQuery は、実行中のクエリに対してプロジェクト レベルの割り当てを強制します。クエリ割り当ての詳細については、割り当てと上限をご覧ください。
クエリ費用を抑えるために、BigQuery は、カスタム割り当てと請求アラートを含むいくつかのオプションを提供しています。詳細については、カスタムコスト管理の作成をご覧ください。
データ分析機能
BigQuery は記述的分析と予測的分析の両方をサポートしています。データを直接照会して統計的質問に答えるには、Google Cloud コンソールを使用します。傾向や異常など、データを視覚的に探索するには、BigQuery と統合される Tableau や Looker などのツールを使用できます。
BigQuery Studio
BigQuery Studio には、BigQuery 内のデータの検出、分析、推論に役立つ次の機能があります。
- 堅牢な SQL エディタ。コード補完、クエリ検証、処理されるバイト数の推定値を提供します。
- Colab Enterprise を使用して構築された埋め込み Python ノートブック。Notebooks は、ワンクリックの Python 開発ランタイム、および BigQuery DataFrames の組み込みサポートを提供します。
- Apache Spark 用の Python ストアド プロシージャを作成できる PySpark エディタ。
- Dataform 上に構築された、ノートブックや保存済みクエリなどのコードアセットのアセット管理と変更履歴。
- Gemini 生成 AI(プレビュー)上に構築された、SQL エディタとノートブックでのコード開発支援。
- データ検出、データ プロファイリング スキャン、データ品質スキャンのための Dataplex 機能。
- ユーザー単位またはプロジェクト単位でジョブ履歴を表示する機能。
- Looker や Google スプレッドシートなどの他のツールに接続して保存したクエリ結果を分析し、他のアプリケーションで使用するために保存したクエリ結果をエクスポートする機能。
BigQuery Studio を使用するには、BigQuery Studio をアセット管理に対して有効にするの手順に沿って操作します。このプロセスにより、次の API が有効になります。
- Compute Engine API: プロジェクトで Python 関数を実行するために必要です。
- Dataform API: ノートブック ファイルなどのコードアセットを保存するために必要です。
- Vertex AI API: BigQuery で Colab Enterprise Python ノートブックを実行するために必要です。
BigQuery ML
BigQuery ML を使用すると、BigQuery で SQL を使用して機械学習(ML)と予測分析を実行できます。詳細については、BigQuery ML の概要をご覧ください。
分析ツールの統合
BigQuery でクエリを実行するだけでなく、次のような BigQuery と統合するさまざまな分析ツールとビジネス インテリジェンス ツールを使用してデータを分析できます。
Looker。Looker は、ビジネス インテリジェンス、データ アプリケーション、組み込み型アナリティクスのためのエンタープライズ プラットフォームです。Looker プラットフォームは、BigQuery を含む多数のデータストアに対応しています。Looker を BigQuery に接続する方法については、Looker の使用をご覧ください。
Looker Studio。クエリを実行した後、Google Cloud コンソールで BigQuery から直接 Looker Studio を起動できます。Looker Studio では、可視化を行い、クエリから返されるデータを調べることができます。Looker Studio の詳細については、Looker Studio の概要をご覧ください。
コネクテッド シート。コンソールで BigQuery から直接コネクテッド シートを起動することもできます。コネクテッド シートは、リクエストまたは定義済みのスケジュールに従って、BigQuery クエリをユーザーに代わって実行します。クエリの結果はスプレッドシートに保存され、分析と共有に利用できます。コネクテッド シートの詳細については、コネクテッド シートの使用をご覧ください。
サードパーティ製ツールの統合
BigQuery と連携するいくつかのサードパーティ分析ツール。たとえば、Tableau を BigQuery データに接続し、その可視化ツールを使用して分析を共有できます。サードパーティ ツールを使用する際の考慮事項の詳細については、サードパーティ ツールの統合をご覧ください。
ODBC ドライバと JDBC ドライバが利用可能です。これらのドライバを使用して、アプリケーションを BigQuery と統合できます。このドライバの目的は、既存のツールとインフラストラクチャで BigQuery の機能を活用できるようにすることです。最新リリースと既知の問題については、BigQuery 用の ODBC ドライバと JDBC ドライバをご覧ください。
pandas-gbq
などの pandas ライブラリを使用すると、Jupyter ノートブックで BigQuery データを操作できます。このライブラリの詳細、BigQuery Python クライアント ライブラリを使用する場合との違いについては、pandas-gbq
との比較をご覧ください。
その他のノートブックと分析ツールとともに BigQuery を使用することもできます。詳細しくは、プログラムによる分析ツールをご覧ください。
BigQuery 分析とさまざまな技術パートナーの一覧については、BigQuery プロダクト ページのパートナーのリストをご覧ください。
次のステップ
- サポートされている SQL ステートメントの導入と概要については、BigQuery での SQL の概要をご覧ください。
- BigQuery でデータのクエリに使用される GoogleSQL 構文については、GoogleSQL のクエリ構文をご覧ください。
- クエリプランの説明の読み取りに関する詳細は、クエリプランの説明の使用をご覧ください。
- 繰り返し実行するクエリのスケジューリング方法については、クエリのスケジューリングをご覧ください。