外部データソースの概要
このページでは、BigQuery の外部に保存されたデータに対してクエリを実行する方法の概要を説明します。
外部データソースは、データが BigQuery ストレージに格納されていない場合でも、BigQuery から直接クエリできるデータソースです。たとえば、別の Google Cloud データベース、Cloud Storage のファイル、または別のクラウド プロダクトにまとめてデータを保管していて、BigQuery で分析を行うものの、移行の準備はできていない場合があります。
外部データソースのユースケースには以下が含まれます。
- 抽出、読み込み、変換(ELT)ワークロードの場合、
CREATE TABLE ... AS SELECT
クエリを使用して、1 つのパスでデータの読み込みとクリーニングを実行し、クリーンアップした結果を BigQuery ストレージに書き込みます。 - 外部データソースから、頻繁に変化するデータと BigQuery テーブルを結合します。外部データソースに対して直接クエリを実行すると、変更されるたびにデータを BigQuery ストレージに再読み込みする必要がなくなります。
BigQuery には、外部データに対してクエリを行うのに、外部テーブルと連携クエリの 2 つのメカニズムがあります。
外部テーブル
外部テーブルは、BigQuery ストレージにメタデータとスキーマを格納するという点で、標準の BigQuery テーブルと似ています。ただし、そのデータは外部ソースにあります。
外部テーブルはデータセット内に格納され、標準の BigQuery テーブルと同じ方法で管理されます。たとえば、 テーブルのプロパティの表示や、アクセス制御の設定などができます。これらのテーブルに対してクエリを実行でき、多くの場合、他のテーブルと結合できます。
外部テーブルには次の 3 種類があります。
- BigLake テーブル
- オブジェクト テーブル
- BigLake 以外の外部テーブル
BigLake テーブル
BigLake テーブルでは、アクセス委任を使用して外部データストアの構造化データをクエリできます。アクセス委任は、BigLake テーブルへのアクセスを、基盤となるデータストアへのアクセスから切り離します。サービス アカウントに関連付けられた外部接続は、データストアへの接続に使用されます。サービス アカウントがデータストアからデータを取得する操作を行うため、必要であるのはユーザーに BigLake テーブルへのアクセス権を付与することのみです。これにより、行レベルや列レベルのセキュリティなど、テーブルレベルでの詳細なセキュリティを適用できます。Cloud Storage に基づく BigLake テーブルの場合は、動的データ マスキングを使用することもできます。Amazon S3 または Blob Storage データの BigLake テーブルを使用したマルチクラウド分析ソリューションの詳細については、BigQuery Omni をご覧ください。
詳細については、BigLake テーブルの概要をご覧ください。
オブジェクト テーブル
オブジェクト テーブルを使用すると、Cloud Storage の非構造化データを分析できます。BigQuery ML を使用してリモート関数で分析を行ったり、推論を実行したりできます。また、これらのオペレーションの結果を BigQuery の残りの構造化データと結合できます。このプレビューのヘルプを利用するには、bq-unstructured-help@google.com
にメールでお問い合わせください。
BigLake テーブルと同様に、オブジェクト テーブルではアクセス委任が使用されます。これにより、オブジェクト テーブルへのアクセスと Cloud Storage オブジェクトへのアクセスが切り離されます。サービス アカウントに関連付けられた外部接続を使用して Cloud Storage に接続するので、ユーザーにオブジェクト テーブルへのアクセス権を付与するだけで済みます。これにより、行レベルのセキュリティを適用し、ユーザーがアクセスできるオブジェクトを管理できます。
詳細については、オブジェクト テーブルの概要をご覧ください。
BigLake 以外の外部テーブル
BigLake 以外の外部テーブルでは、外部データストアの構造化データをクエリできます。BigLake 以外の外部テーブルをクエリするには、外部テーブルと外部データソースの両方に対する権限が必要です。たとえば、Cloud Storage のデータソースを使用する BigLake 以外の外部テーブルをクエリするには、次の権限が必要です。
bigquery.tables.getData
bigquery.jobs.create
storage.buckets.get
storage.objects.get
詳細については、外部テーブルの概要をご覧ください。
連携クエリ
連携クエリを使用すると、Cloud Spanner または Cloud SQL データベースにクエリ ステートメントを送信し、結果を一時テーブルとして取得できます。連携クエリは、BigQuery Connection API を使用して Spanner または Cloud SQL との接続を確立します。クエリでは、EXTERNAL_QUERY
関数を使用し、そのデータベースの SQL 言語を使用してクエリ ステートメントを外部データベースに送信します。結果は GoogleSQL データ型に変換されます。
詳細については、連携クエリの概要をご覧ください。
外部データソースの機能の比較
次の表は、外部データソースの動作を比較したものです。
BigLake テーブル | オブジェクト テーブル | BigLake 以外の外部テーブル | 連携クエリ | |
---|---|---|---|---|
アクセスの委任を使用します。 | ○(サービス アカウントを使用) | ○(サービス アカウントを使用) | × | ○(データベース ユーザー アカウントを使用)(Cloud SQL のみ) |
複数のソース URI に基づくことが可能 | あり | あり | ○(Cloud Storage のみ) | 該当なし |
行マッピング | 行はファイルの内容を表す | 行はファイルのメタデータを表す | 行はファイルの内容を表す | 該当なし |
コネクタを使用することで他のデータ処理ツールからアクセス可能 | ○(Cloud Storage のみ) | なし | ○ | 該当なし |
他の BigQuery テーブルに結合可能 | ○(Cloud Storage のみ) | ○ | はい | ○ |
一時テーブルとしてアクセス可能 | ○(Cloud Storage のみ) | なし | はい | ○ |
Amazon S3 と連携 | ○ | いいえ | いいえ | × |
Azure Storage と連携 | ○ | いいえ | いいえ | × |
Cloud Bigtable と連携 | なし | いいえ | ○ | × |
Cloud Spanner と連携 | × | いいえ | いいえ | ○ |
Cloud SQL と連携 | × | いいえ | いいえ | ○ |
Google ドライブに対応 | いいえ | いいえ | ○ | × |
Cloud Storage に対応 | ○ | ○ | ○ | × |
次のステップ
- BigLake テーブルの詳細を確認する。
- オブジェクト テーブルの詳細
- 外部テーブルの詳細を確認する。
- 連携クエリの詳細を確認する。
- BigQuery の料金を確認する。