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

連携クエリ

このページでは、BigQuery で連携クエリを使用する方法の概要を説明します。

概要

連携クエリは、クエリ ステートメントを外部データベースに送信し、結果を一時テーブルとして返す方法です。連携クエリは、BigQuery Connection API を使用して外部データベースとの接続を確立します。標準 SQL クエリでは、EXTERNAL_QUERY 関数を使用し、そのデータベースの SQL 言語を使用してクエリ ステートメントを外部データベースに送信します。結果は Google 標準 SQL データ型に変換されます。

連携クエリは、次の外部データベースで使用できます。

最初に 1 回だけ設定を行う必要がありますが、その後は EXTERNAL_QUERY SQL 関数を使用してクエリを作成できます。

ワークフロー

  • クエリを実行するデータソースを含む Google Cloud プロジェクトを選択します。
  • bigquery.admin ユーザーが BigQuery で接続リソースを作成します。
  • 管理ユーザーが、ユーザー B に接続リソースの使用権限を付与します。
    • 管理者とユーザー B が同一人物の場合は、権限を付与する必要はありません。
  • ユーザー B が BigQuery で新しい EXTERNAL_QUERY 関数を使用してクエリを作成します。

サポートされるリージョン

連携クエリは、外部データソースと BigQuery の両方をサポートするリージョンでのみサポートされます。

ロケーションまたはリージョンのタイプ

ロケーションには、2 つの種類があります。

  • リージョンは、ロンドンなどの特定の地理的な場所となります。

  • マルチリージョンは、米国などの、2 つ以上の地理的な場所を含む広い地理的なエリアとなります。

次のルールに従って接続を作成し、リージョン間で連携クエリを実行できます。

マルチリージョン

BigQuery マルチリージョンは、同じ大規模な地理的領域(米国、EU)内の任意のデータソース リージョンにクエリを実行できます。次に例を示します。

  • BigQuery US マルチリージョンで実行されるクエリは、us-central1us-east4us-west2 など、米国内の任意のシングル リージョンに対してクエリを実行できます。
  • BigQuery EU マルチリージョンで実行されるクエリは、europe-north1europe-west3 など、EU の加盟国にある任意のシングル リージョンに対してクエリを実行できます。
  • クエリを実行するロケーションは、接続リソースのロケーションと同じにする必要があります。たとえば、US マルチリージョンから実行されたクエリは、US マルチリージョンにある接続を使用する必要があります。

クエリ処理ロケーションはマルチリージョン ロケーション(US または EU)です。

リージョンとマルチリージョンの詳細については、データセットのロケーションのページをご覧ください。

単一リージョン

BigQuery の単一リージョンは、同じリージョン内のリソースにのみクエリを実行できます。次に例を示します。

  • BigQuery の単一リージョン us-east4 は、us-east4 の Cloud SQL にのみクエリを実行できます。

この例では、クエリ処理ロケーションは BigQuery の単一リージョンです。

詳細については、Cloud SQL 連携クエリをご覧ください。

データ型マッピング

連携クエリを実行すると、外部データソースのデータは Google 標準 SQL 型に変換されます。詳細については、Cloud SQL 連携クエリをご覧ください。

割り当てと上限

  • クロスリージョンの連携クエリ: BigQuery のクエリ処理ロケーションと外部データソースのロケーションが異なる場合、クロスリージョンのクエリになります。プロジェクトごとに 1 日あたり 1 TB までクロス リージョンのクエリを実行できます。クロスリージョンのクエリの例を次に示します。
    • Cloud SQL インスタンスは us-west1 にありますが、BigQuery 接続は US マルチリージョンを基点にしています。BigQuery のクエリ処理ロケーションは US です。
  • 割り当て: ユーザーは、Cloud SQL などの外部データソースのクエリ割り当てを制御する必要があります。連携クエリに追加の割り当て設定はありません。ワークロードの分離を実現するには、データベースのリードレプリカに対してのみクエリを実行することをおすすめします。
  • 課金対象の最大バイト数: 現時点で、このフィールドは連携クエリで使用できません。実際に連携クエリを実行する前に課金対象のバイト数を計算することはできません。
  • 接続数: 連携クエリは、最大 10 の一意の接続を使用できます。

料金

BigQuery から連携クエリを実行すると、外部クエリから返されたバイト数に基づいて料金が請求されます。詳しくは、オンデマンド分析の料金をご覧ください。