コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

外部データソースの概要

このページでは、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 に対応 ×

次のステップ