外部データソースの概要

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

概要

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

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

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

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

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

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

  • BigQuery では外部データソースに対してデータの整合性が保証されません。クエリの実行中に基になるデータが変更されると、予期しない動作が発生する可能性があります。
  • 外部データソースに対するクエリのパフォーマンスは、ネイティブな BigQuery テーブルのデータに対するクエリよりも低くなる可能性があります。クエリ速度を優先する場合は、外部データソースを設定するのではなく、データを BigQuery に読み込みます。外部データソースを含むクエリのパフォーマンスは、外部ストレージのタイプに依存します。たとえば、Google 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 ドライブの外部データソースには適用されません。
  • データを読み込む場合は、Cloud Storage バケットを同じリージョンに配置する
    • BigQuery データセットがマルチリージョン ロケーションにある場合、読み込み対象のデータが含まれている Cloud Storage バケットは、同じロケーションのリージョンまたはマルチリージョン バケットに存在する必要があります。たとえば、BigQuery データセットが EU にある場合、Cloud Storage バケットは EU のリージョンまたはマルチリージョン バケットに存在する必要があります。
    • データセットがリージョン ロケーションにある場合、Cloud Storage バケットは同じロケーションのリージョン バケットに存在する必要があります。たとえば、データセットが東京リージョンにある場合、Cloud Storage バケットは東京のリージョン バケットである必要があります。
    • 例外: データセットが米国のマルチリージョン ロケーションにある場合、任意のリージョンまたはマルチリージョン ロケーションにある Cloud Storage バケットからデータを読み込むことができます。
  • データをエクスポートする場合は、Cloud Storage バケットを同じリージョンに配置する
    • データをエクスポートする場合、リージョンまたはマルチリージョンの Cloud Storage バケットを BigQuery データセットと同じロケーションに配置する必要があります。たとえば、BigQuery データセットが EU のマルチリージョン ロケーションにある場合、エクスポート対象のデータが含まれている Cloud Storage バケットは EU のマルチリージョン バケットに存在する必要があります。
    • データセットがリージョン ロケーションにある場合、Cloud Storage バケットは同じロケーションのリージョン バケットに存在する必要があります。たとえば、データセットが東京リージョンにある場合、Cloud Storage バケットは東京のリージョン バケットである必要があります。
    • 例外: データセットが米国のマルチリージョン ロケーションにある場合、任意のリージョンまたはマルチリージョン ロケーションにある Cloud Storage バケットにデータをエクスポートできます。
  • データ管理計画を作成する
    • 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 を使用して大量のデータセットを保存し、移動させる方法の詳細については、Google Cloud Storage とビッグデータの使用をご覧ください。

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

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

外部データソースの料金

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

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

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

次のステップ

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

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

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