クロスクラウド接続を作成する

クロスクラウド接続は、Amazon Web Services(AWS)、Microsoft Azure、Salesforce Data 360 から BigQuery にデータを取得してクエリを実行する BigQuery 接続です。これらの接続は、BigQuery Omni を使用する標準の BigQuery 接続の代替手段です。BigQuery は、軽量のコンピューティング ワーカーをリモート リージョンにデプロイして、データを移動することなく、他のクラウドのデータをクエリできるようにします。

ワークロードは、次の理由により、標準接続ではなくクロスクラウド接続のメリットを活用できます。

  • 機能の整合性。他のクラウドから BigQuery にデータを移行すると、BigQuery AI 機能、Gemini Enterprise Agent Platform、マテリアライズド ビュー、ユーザー定義関数など、標準接続では利用できない機能に直接アクセスできます。
  • 費用対効果。クロスクラウド接続を使用するワークロードは、標準のスロット予約とコミットメントを消費するため、個別のコンピューティング容量を管理する必要がありません。
  • インテリジェントなキャッシュ保存。接続でクロスクラウド キャッシュを有効にすると、BigQuery は取得したファイル ブロックを接続の Google Cloud リージョン内にローカルにキャッシュします。同じファイル ブロックをターゲットとする後続のクエリは、リモート クラウドからファイルを再取得するのではなく、ローカル キャッシュから直接読み取られます。これにより、クロスクラウドの下り(外向き)費用が削減され、クエリのパフォーマンスが向上します。デフォルトでは、クロスクラウド キャッシュは無効になっています。詳細については、インテリジェント キャッシュをご覧ください。

ワークロードに Apache Iceberg カタログが含まれている場合や、BigQuery 以外のエンジンでクエリをサポートする必要がある場合は、代わりにボーダーレス Lakehouse のクロスクラウド データアクセス機能の使用を検討してください。

始める前に

このドキュメントの各タスクを実行するために必要な権限をユーザーに与える Identity and Access Management とサードパーティのロールを付与します。

必要な BigQuery のロール

クロスクラウド接続の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 (roles/bigquery.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

必要なサードパーティのロール

クロスクラウド接続の作成に必要な権限を取得するには、次のサードパーティのロールがあることを確認してください。

  • AWS の場合: AWS アカウントで IAM ポリシーとロールを作成できるロール。
  • Azure の場合: Microsoft Entra ID(Azure AD)でアプリ登録を管理し、ターゲット Azure アカウントに Storage Blob Data Reader などのロールを割り当てることができるロール。

AWS のクロスクラウド接続を作成する

AWS クロスクラウド接続を作成するには、次の操作を行います。

  1. 標準の BigQuery 接続の場合と同様に、BigQuery の AWS IAM ポリシーを作成します。
  2. 標準の BigQuery 接続の場合と同様に、BigQuery の AWS IAM ロールを作成します。
  3. Google Cloud コンソールまたは bq コマンドライン ツールを使用して、接続リソースを作成し、そのサービス アカウント ID を取得します。

    コンソール

    1. [BigQuery] ページに移動します。

      BigQuery に移動

    2. [エクスプローラ] ペインで、プロジェクト名を開き、[接続] をクリックします。

    3. [接続] ページで、[接続を作成] をクリックします。

    4. [外部データソース] ペインで、次の情報を入力します。

      • [Connection type] で、[BigLake on AWS (via BigQuery Omni)] を選択します。
      • [接続 ID] に、接続リソースの識別子を入力します。
      • [リージョン] で、BigQuery Omni のロケーションではなく、標準の BigQuery のロケーション(us-east4 など)を選択します。リージョンの選択に関するガイダンスについては、リージョンの推奨事項をご覧ください。
      • [AWS ロール ID] に、IAM ロールの ARN(arn:aws:iam::AWS_ACCOUNT_ID:role/ROLE_NAME)を入力します。
      • 省略可: [クロスクラウド キャッシュ] で [クロスクラウド キャッシュを有効にする] を選択して、接続のGoogle Cloud リージョンにリモート ファイルをキャッシュに保存し、クエリのパフォーマンスを向上させます。この設定は、後で接続の [接続情報] ページで [詳細を編集] をクリックして更新することもできます。キャッシュ保存の仕組み、保持、料金の詳細については、インテリジェント キャッシュ保存をご覧ください。
    5. [接続を作成] をクリックし、[接続に移動] をクリックします。

    6. [接続情報] ペインで、[BigQuery Google ID] の値をコピーします。

    bq

    1. 接続リソースを作成するには、bq mk --connection コマンドを使用します。

      bq mk --connection \
         --connection_type='AWS' \
         --location=LOCATION \
         --project_id=PROJECT_ID \
         --properties='{"accessRole":{"iamRoleId":"arn:aws:iam::AWS_ACCOUNT_ID:role/ROLE_NAME"},"crossCloudCacheOptions":{"enabled":CROSS_CLOUD_CACHE_ENABLED}}' \
         CONNECTION_ID

      次のように置き換えます。

      • LOCATION: BigQuery Omni のロケーションではなく、標準の BigQuery のロケーション。リージョンの選択に関するガイダンスについては、リージョンの推奨事項をご覧ください。
      • PROJECT_ID: 実際のGoogle Cloud プロジェクト ID。
      • AWS_ACCOUNT_ID: 前のステップで取得した AWS IAM ユーザーの ID。
      • ROLE_NAME: 選択した AWS ロールポリシー名。
      • CROSS_CLOUD_CACHE_ENABLED: 省略可。接続でクロスクラウド キャッシュを有効にするかどうか(true または false)。デフォルトは false です。true に設定すると、BigQuery は接続のGoogle Cloud リージョンにリモート ファイルをキャッシュに保存します。詳細については、インテリジェント キャッシュ保存をご覧ください。
      • CONNECTION_ID: この接続リソースに付ける ID。

      AWS 接続プロパティの詳細については、AwsProperties をご覧ください。

    2. サービス アカウント情報をメモするには、bq show コマンドを使用します。

      bq show --connection \
         --location=LOCATION \
         PROJECT_ID.LOCATION.CONNECTION_ID
  4. 標準の BigQuery 接続の場合と同様に、サービス アカウント情報を使用して信頼ポリシーを AWS ロールに追加します。

AWS クロスクラウド接続を確立したら、テーブルとデータセットを作成してリモートデータをクエリできます。

AWS の例

次の例では、クロスクラウド接続を使用して Amazon Simple Storage Service(Amazon S3)バケットから Parquet ファイルを直接クエリする外部テーブルを作成します。

CREATE SCHEMA `my-project.aws_raw_data`
  OPTIONS (
    location = 'us-east4');

CREATE EXTERNAL TABLE `my-project.aws_raw_data.sales_parquet`
WITH CONNECTION `us-east4.my-aws-connection`
  OPTIONS (
    format = 'PARQUET',
    uris = ['s3://my-data-bucket/sales/year=2025/*']);

次の例では、AWS Glue とクロスクラウド接続を使用して、データベース全体を BigQuery に連携します。

CREATE EXTERNAL SCHEMA `my-project.aws_glue_data`
WITH CONNECTION `us-east4.my-aws-connection`
  OPTIONS (
    location = 'us-east4',
    external_source = 'aws-glue://arn:aws:glue:us-east-4:123456789:database/test_database');

AWS Glue 連携の詳細については、AWS Glue 連携データセットを作成して管理するをご覧ください。

Azure のクロスクラウド接続を作成する

Azure のクロスクラウド接続を作成するには、次の操作を行います。

  1. 標準の BigQuery 接続の場合と同様に、Azure テナントでアプリケーションを作成し、アプリケーション(クライアント)ID とディレクトリ(テナント)ID をメモします。
  2. 標準の BigQuery 接続の場合と同様に、Azure アプリケーションにロールを割り当てます。
  3. Google Cloud コンソールまたは bq コマンドライン ツールを使用して、接続リソースを作成し、そのサービス アカウント ID を取得します。

    コンソール

    1. [BigQuery] ページに移動します。

      BigQuery に移動

    2. [エクスプローラ] ペインで、プロジェクト名を開き、[接続] をクリックします。

    3. [接続] ページで、[接続を作成] をクリックします。

    4. [外部データソース] ペインで、次の情報を入力します。

      • [接続タイプ] で、[Azure 上の BigLake(BigQuery Omni 経由)] を選択します。
      • [接続 ID] に、接続リソースの識別子を入力します。
      • [リージョン] で、BigQuery Omni のロケーションではなく、標準の BigQuery のロケーション(us-east4 など)を選択します。リージョンの選択に関するガイダンスについては、リージョンの推奨事項をご覧ください。
      • [Azure テナント ID] に Azure ディレクトリ(テナント)ID を入力します。
      • [フェデレーション ID を使用する] を選択し、[Azure 連携アプリケーション(クライアント)ID] フィールドに Azure アプリケーション(クライアント)ID を入力します。
      • 省略可: [クロスクラウド キャッシュ] で [クロスクラウド キャッシュを有効にする] を選択して、接続のGoogle Cloud リージョンにリモート ファイルをキャッシュに保存し、クエリのパフォーマンスを向上させます。この設定は、後で接続の [接続情報] ページで [詳細を編集] をクリックして更新することもできます。キャッシュ保存の仕組み、保持、料金の詳細については、インテリジェント キャッシュ保存をご覧ください。
    5. [接続を作成] をクリックし、[接続に移動] をクリックします。

    6. [接続情報] ペインで、[BigQuery Google ID] の値をコピーします。

    bq

    1. 接続リソースを作成するには、bq mk --connection コマンドを使用します。

      bq mk --connection \
         --connection_type='Azure' \
         --tenant_id=TENANT_ID \
         --location=LOCATION \
         --federated_azure=true \
         --federated_app_client_id=APP_ID \
         --project_id=PROJECT_ID \
         --properties='{"crossCloudCacheOptions":{"enabled":CROSS_CLOUD_CACHE_ENABLED}}' \
         CONNECTION_ID

      次のように置き換えます。

      • TENANT_ID: Azure アカウントを含む Azure ディレクトリのテナント ID。
      • LOCATION: BigQuery Omni のロケーションではなく、標準の BigQuery のロケーション。リージョンの選択に関するガイダンスについては、リージョンの推奨事項をご覧ください。
      • APP_ID: Azure アプリケーション(クライアント)ID。
      • PROJECT_ID: 実際のGoogle Cloud プロジェクト ID。
      • CROSS_CLOUD_CACHE_ENABLED: 省略可。接続でクロスクラウド キャッシュを有効にするかどうか(true または false)。デフォルトは false です。true に設定すると、BigQuery は接続のGoogle Cloud リージョンにリモート ファイルをキャッシュに保存します。詳細については、インテリジェント キャッシュ保存をご覧ください。
      • CONNECTION_ID: この接続リソースに付ける ID。

      Azure 接続プロパティの詳細については、AzureProperties をご覧ください。

    2. サービス アカウント情報をメモするには、bq show コマンドを使用します。

      bq show --connection \
         --location=LOCATION \
         PROJECT_ID.LOCATION.CONNECTION_ID
  4. 標準の BigQuery 接続の場合と同様に、サービス アカウント情報を使用して連携認証情報を追加します。

Azure のクロスクラウド接続を確立したら、テーブルとデータセットを作成してリモートデータにクエリを実行できます。

Azure の例

次の例では、クロスクラウド接続を使用して Azure Blob Storage コンテナから Parquet ファイルを直接クエリする外部テーブルを作成します。

CREATE SCHEMA `my-project.azure_raw_data`
  OPTIONS (
    location = 'us-east4');

CREATE EXTERNAL TABLE `my-project.azure_raw_data.sales_parquet`
WITH CONNECTION `us-east4.my-azure-connection`
  OPTIONS (
    format = 'PARQUET',
    uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/sales/year=2025/*']);

次の例では、クロスクラウド接続を使用して Blob Storage コンテナから未加工の CSV エクスポートをクエリする外部テーブルを作成します。

CREATE EXTERNAL TABLE `my-project.azure_raw_data.daily_logs_csv`
WITH CONNECTION `us-east4.my-azure-connection`
  OPTIONS (
    format = 'CSV',
    skip_leading_rows = 1,
    uris = ['azure://mystorageaccount.blob.core.windows.net/mycontainer/logs/*.csv']);

Data 360 のクロスクラウド接続を作成する

Data 360 のクロスクラウド接続を作成するには、Data 360 データセットを BigQuery にリンクする手順に沿って操作します。ただし、リンクされたデータセットを BigQuery Omni のロケーションに作成するのではなく、標準の BigQuery のロケーションに作成します。リージョンの選択に関するガイダンスについては、リージョンの推奨事項をご覧ください。

新しいデータセットを使用するようにクエリを更新したら、以前のリンクされたデータセットと BigQuery Omni マテリアライズド ビューを削除できます。

リージョンの推奨事項

クロスクラウド接続に標準の BigQuery リージョンを選択する場合は、費用とパフォーマンスの効率を最適化するために、データに物理的に最も近いリージョンを選択します。

次の表に、AWS リージョンと、対応する最適な BigQuery リージョンを示します。

AWS リージョン 最も近い BigQuery リージョン その他の近接する BigQuery リージョン
us-east-1 us-east4 us-east1
us-east5
us-central1
us-east-2 us-east5 us-east4
us-east1
us-central1
us-west-1 us-west2 us-west4
us-west1
us-west3
us-west-2 us-west1 us-west3
us-west4
us-west2
ca-central-1 northamerica-northeast1 northamerica-northeast2
us-east4
us-east5
sa-east-1 southamerica-east1 southamerica-west1
us-east1
us-south1
eu-west-1 europe-west1 europe-west2
europe-west9
europe-west4
eu-west-2 europe-west2 europe-west1
europe-west9
europe-west4
eu-west-3 europe-west9 europe-west1
europe-west2
europe-west3
eu-central-1 europe-west3 europe-west4
europe-west1
europe-west6
eu-central-2 europe-west6 europe-west8
europe-west12
europe-west3
eu-north-1 europe-north1 europe-west4
europe-central2
europe-west1
eu-south-1 europe-west8 europe-west12
europe-west6
europe-west3
eu-south-2 europe-southwest1 europe-west9
europe-west1
europe-west8
me-central-1 me-central1 me-central2
me-west1
asia-south1
me-south-1 me-central2 me-central1
me-west1
asia-south1
af-south-1 europe-southwest1 me-central2
me-west1
europe-west1
ap-east-1 asia-east2 asia-east1
asia-southeast1
asia-northeast1
ap-northeast-1 asia-northeast1 asia-northeast2
asia-northeast3
asia-east1
ap-northeast-2 asia-northeast3 asia-northeast2
asia-northeast1
asia-east1
ap-northeast-3 asia-northeast2 asia-northeast1
asia-northeast3
asia-east1
ap-south-1 asia-south1 asia-south2
me-central1
asia-southeast1
ap-south-2 asia-south2 asia-south1
asia-southeast1
me-central1
ap-southeast-1 asia-southeast1 asia-southeast2
asia-east1
asia-south1
ap-southeast-2 australia-southeast1 australia-southeast2
asia-southeast2
asia-southeast1
ap-southeast-3 asia-southeast2 asia-southeast1
australia-southeast1
asia-east1

次の表に、Azure リージョンと、対応する最適な BigQuery リージョンを示します。

Azure リージョン 最も近い BigQuery リージョン その他の近接する BigQuery リージョン
米国東部 us-east4 us-east1
us-east5
us-central1
米国東部 2 us-east4 us-east1
us-east5
us-south1
米国西部 us-west1 us-west2
us-west3
us-west4
米国西部 2 us-west1 us-west4
us-west3
us-west2
米国西部 3 us-west4 us-west2
us-west3
us-west1
米国中部 us-central1 us-east5
us-east4
us-east1
米国中北部 us-east5 us-central1
us-east4
us-east1
米国中南部 us-south1 us-east5
us-central1
us-east1
米国中西部 us-west3 us-central1
us-west4
us-west2
カナダ中部 northamerica-northeast2 northamerica-northeast1
us-east5
us-east4
カナダ東部 northamerica-northeast1 northamerica-northeast2
us-east4
us-east5
西ヨーロッパ europe-west4 europe-west1
europe-west3
europe-west9
北ヨーロッパ europe-west1 europe-west2
europe-west9
europe-west4
フランス中部 europe-west9 europe-west1
europe-west2
europe-west3
フランス南部 europe-west9 europe-southwest1
europe-west8
europe-west1
ドイツ中西部 europe-west3 europe-west4
europe-west1
europe-west6
ドイツ北部 europe-west3 europe-west4
europe-central2
europe-west2
スイス北部 europe-west6 europe-west8
europe-west12
europe-west3
スイス西部 europe-west6 europe-west9
europe-west8
europe-west3
英国南部 europe-west2 europe-west1
europe-west9
europe-west4
英国西部 europe-west2 europe-west1
europe-west9
europe-west4
ノルウェー東部 europe-north1 europe-west4
europe-central2
europe-west1
ノルウェー西部 europe-north1 europe-west4
europe-central2
europe-west1
スウェーデン中部 europe-north1 europe-west4
europe-central2
europe-west1
東アジア asia-east2 asia-east1
asia-southeast1
asia-northeast1
東南アジア asia-southeast1 asia-southeast2
asia-east1
asia-south1
東日本 asia-northeast1 asia-northeast2
asia-northeast3
asia-east1
西日本 asia-northeast2 asia-northeast1
asia-northeast3
asia-east1
韓国中部 asia-northeast3 asia-northeast2
asia-northeast1
asia-east1
オーストラリア東部 australia-southeast1 australia-southeast2
asia-southeast2
asia-southeast1
オーストラリア南東部 australia-southeast2 australia-southeast1
asia-southeast1
asia-east1
オーストラリア中部 australia-southeast1 australia-southeast2
asia-southeast2
asia-southeast1
インド西部 asia-south1 asia-south2
me-central1
asia-southeast1
インド中部 asia-south1 asia-south2
me-central1
asia-southeast1
インド南部 asia-south1 asia-south2
asia-southeast1
me-central1

次のステップ