外部データソースの概要

このページでは、BigQuery の外部に保存されたデータに対してクエリを実行する方法の概要を説明します。

概要

外部データソース(フェデレーション データソースとも呼ばれます)は、データが BigQuery に格納されていない場合でも直接クエリできるデータソースです。データの読み込みまたはストリーミングの代わりに、外部データソースを参照するテーブルを作成します。

BigQuery では、次のデータに対して直接クエリを実行できます。

外部データソースを使用する場合:

  • 外部データソース(BigQuery の外部の場所)からデータに対してクエリを実行し、クリーニングした結果を BigQuery ストレージに書き込むことによって、1 つのパスでデータの読み込みとクリーニングを行います。
  • 他のテーブルと結合する少量のデータを頻繁に変更します。外部データソースであるため、頻繁に変更されるデータは更新されるたびに再読み込みする必要がありません。

外部データソースの制限事項

外部データソースの場合、次のような制限があります。

  • BigQuery では外部データソースに対してデータの整合性が保証されません。クエリの実行中に基になるデータを変更すると、予期しない動作が発生する可能性があります。
  • 外部データソースに対するクエリのパフォーマンスは、ネイティブな BigQuery テーブルのデータに対するクエリよりも低くなる可能性があります。クエリ速度を優先する場合は、外部データソースを設定するのではなく、データを BigQuery に読み込みます。外部データソースを含むクエリのパフォーマンスは、外部ストレージのタイプに依存します。たとえば、Cloud Storage に格納されたデータのクエリは、Google ドライブに格納されたデータのクエリよりも高速です。一般的に、外部データソースのクエリ パフォーマンスは、その外部ストレージからデータを直接読み取る処理と同等になります。
  • TableDataList JSON API メソッドを使用して、外部データソースに存在するテーブルのデータを取得することはできません。詳しくは、Tabledata: list をご覧ください。

    この制限を回避するには、宛先テーブルにクエリ結果を保存します。その後、結果テーブルで TableDataList メソッドを使用できます。

  • 外部データソースからデータをエクスポートする BigQuery ジョブは実行できません。

    この制限を回避するには、宛先テーブルにクエリ結果を保存します。その後、結果テーブルに対してエクスポート ジョブを実行できます。

  • ワイルドカード テーブルのクエリで外部データソースを参照することはできません。

  • 現在のところ、Parquet 形式または ORC 形式で保存された外部データに対してクエリを実行することはできません。

  • 外部データソースに対してクエリを実行する場合、結果はキャッシュに保存されません。同じクエリを複数回発行する場合でも、外部テーブルに対するクエリごとに課金されます。頻繁には変更されない外部テーブルに対してクエリを繰り返し発行する必要がある場合は、クエリ結果を永続的なテーブルに書き込み、永続的なテーブルに対してクエリを実行することを検討してください。

  • 現在、Cloud Bigtable のデータのクエリは、次のリージョンとゾーンでのみ利用できます。
    リージョン ゾーン
    us-central1

    us-central1-a

    us-central1-b

    us-central1-c

    us-central1-f

    europe-west1

    europe-west1-b

    europe-west1-c

    europe-west1-d

  • Cloud Bigtable 外部データソースに対する最大同時クエリ数は 4 です。

ロケーションに関する考慮事項

データのロケーションを選択するときは、次の点を考慮してください。

  • BigQuery データセットと外部データソースを同じロケーションに配置する
    • Cloud Storage などの外部データソースのデータをクエリする場合、クエリするデータは BigQuery データと同じロケーションに存在する必要があります。たとえば、BigQuery データセットが EU のマルチリージョン ロケーションにある場合、クエリ対象のデータが含まれている Cloud Storage バケットは、EU のマルチリージョン バケットに存在する必要があります。データセットが米国のマルチリージョン ロケーションにある場合、Cloud Storage バケットは米国のマルチリージョン バケットに存在する必要があります。
    • データセットがリージョン ロケーションにある場合、クエリ対象のデータが含まれている Cloud Storage バケットは、同じロケーションのリージョン バケットに存在する必要があります。たとえば、データセットが東京リージョンにある場合、Cloud Storage バケットは東京のリージョン バケットである必要があります。
    • 外部データセットが Cloud Bigtable にある場合、データセットは米国または EU のマルチリージョン ロケーションに存在する必要があります。Cloud Bigtable データは、サポートされている Cloud Bigtable のロケーションのいずれかに存在する必要があります。
    • ロケーションに関する考慮事項は、Google ドライブの外部データソースには適用されません。
  • データ管理計画を作成する
    • BigQuery データセットや Cloud Storage バケットなどのリージョン ストレージ リソースを選択する場合は、データの地理的管理を行うための計画を作成します。

Cloud Storage のロケーションの詳細については、Cloud Storage のドキュメントのバケットのロケーションをご覧ください。

ロケーション間での BigQuery データの移動

データセットの作成後にロケーションを変更することはできません。また、データセットをあるロケーションから別のロケーションに移動させることもできません。データセットをあるロケーションから別のロケーションに移動する場合は、次の手順に従います。

  1. BigQuery テーブルから、データセットと同じロケーションにあるリージョンまたはマルチリージョンの Cloud Storage バケットにデータをエクスポートします。たとえば、データセットが EU のマルチリージョン ロケーションにある場合は、EU のリージョンまたはマルチリージョン バケットにデータをエクスポートします。

    BigQuery からのデータのエクスポートについて請求は発生しませんが、エクスポートしたデータを Cloud Storage に保存する場合は請求の対象になります。BigQuery からのエクスポートは、エクスポート ジョブの制限が適用されます。

  2. Cloud Storage バケットから新しいロケーションのリージョンまたはマルチリージョン バケットに、データをコピーするか移動します。たとえば、米国のマルチリージョン ロケーションから東京のリージョン ロケーションにデータを移動すると、データは東京のリージョン バケットに転送されます。Cloud Storage オブジェクトの転送に関する詳細については、Cloud Storage ドキュメントのオブジェクトの名前変更、コピー、移動をご覧ください。

    リージョン間でデータを転送すると、Cloud Storage でネットワークの下り料金が発生することに注意してください。

  3. 新しいロケーションの Cloud Storage バケットにデータを転送した後、新しい BigQuery データセットを(新しいロケーションに)作成します。次に、Cloud Storage バケットから BigQuery にデータを読み込みます。

    BigQuery へのデータの読み込みについて請求は発生しませんが、Cloud Storage にデータを保存した場合は請求が発生し、データまたはバケットを削除するまで請求が行われます。読み込まれたデータを BigQuery に保存した場合も、請求の対象になります。BigQuery へのデータの読み込みには、読み込みジョブの制限が適用されます。

Cloud Storage を使用した大量のデータセットの保存や移動の詳細については、Cloud Storage とビッグデータの使用をご覧ください。

外部データソースの割り当て

外部データソースの制限事項は、割り当てと制限のページの読み込みジョブで説明されている読み込みジョブの制限事項と同じです。

外部データソースの料金

外部データソースに対してクエリを実行する場合、クエリによって読み取られたバイト数に基づいて料金が請求されます。詳細については、クエリの料金をご覧ください。

また、アプリケーションの料金設定のガイドラインに従い、ソース アプリケーションで使用されるデータやリソースの保存に対しても請求されます。

  • Cloud Storage の料金については、Cloud Storage の料金をご覧ください。
  • Cloud Bigtable の料金については、料金をご覧ください。
  • Google ドライブの料金については、料金をご覧ください。

次のステップ

  • Cloud Bigtable に保存されているデータに対してクエリを実行する方法を学ぶ
  • Cloud Storage に保存されているデータに対してクエリを実行する方法を学ぶ
  • Google ドライブに保存されているデータに対してクエリを実行する方法を学ぶ
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。