このページでは、BigQuery 外部データラッパーを使用して、BigQuery を使用して保存またはアクセス可能なデータに AlloyDB for PostgreSQL インターフェースからアクセスする方法について説明します。データは、ネイティブ テーブル、BigLake 外部テーブル、または BigQuery 内の Apache Iceberg 用 BigLake テーブルとして BigQuery に保存できます。詳細については、AlloyDB の BigQuery ビューの概要をご覧ください。
このページでは、AlloyDB クラスタとプライマリ インスタンスを作成しており、BigQuery のデータセットとテーブルがあることを前提としています。詳細については、データセットの作成とテーブルの作成と使用をご覧ください。
始める前に
- クラスタの BigQuery ビュー機能へのアクセスをリクエストし、有効化の確認が届いたら、このページの手順に沿って操作してください。
- サポートされている BigQuery のデータ型と列のマッピングについて理解しておいてください。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
AlloyDB for PostgreSQL の作成と接続に必要な Cloud APIs を有効にします。
[プロジェクトを確認] の手順で、[次へ] をクリックして、変更するプロジェクトの名前を確認します。
[API を有効にする] の手順で、[有効にする] をクリックして、次の機能を有効にします。
- AlloyDB API
- Compute Engine API
- Cloud Resource Manager API
- Service Networking API
- BigQuery Storage API
AlloyDB と同じ Google Cloud プロジェクトにある VPC ネットワークを使用して AlloyDB へのネットワーク接続を構成する場合は、Service Networking API が必要です。
別の Google Cloud プロジェクトにある VPC ネットワークを使用して AlloyDB へのネットワーク接続を構成する場合は、Compute Engine API と Cloud Resource Manager API が必要です。
- BigQuery データ閲覧者(
roles/bigquery.dataViewer)、またはbigquery.tables.get権限とbigquery.tables.getData権限を含むカスタムロール。このロールをテーブルまたはビューに付与すると、テーブルまたはビューからデータとメタデータを読み取る権限が付与されます。 - BigQuery 読み取りセッション ユーザー(
roles/bigquery.readSessionUser)、またはbigquery.readsessions.create権限とbigquery.readsessions.getData権限を含むカスタムロール。読み取りセッションを作成および使用する権限が付与されます。 gcloud CLI を開きます。gcloud CLI がインストールされていない場合は、gcloud CLI をインストールして初期化するか、Cloud Shell を使用します。
gcloud beta alloydb clusters describeコマンドを実行します。gcloud beta alloydb clusters describe CLUSTER --region=REGION次のように置き換えます。
CLUSTER: AlloyDB クラスタ ID。REGION: AlloyDB クラスタのロケーション(例:asia-east1、us-east1)。リージョンの一覧については、インスタンスのロケーションの管理をご覧ください。
出力には、このクラスタのサービス アカウントである
serviceAccountEmailフィールドが含まれます。必要な権限を付与します。詳細については、IAM を使用してリソースへのアクセスを制御するをご覧ください。
クラスタのサービス アカウントに必要な権限がない場合、BigQuery テーブルに対してクエリを実行すると、次のエラーが表示されます。
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
拡張機能を作成します。
- psql クライアントをインスタンスに接続するの手順に沿って、psql クライアントを使用して AlloyDB インスタンスに接続します。または、AlloyDB Studio を使用することもできます。詳細については、 Google Cloud コンソールを使用してデータを管理するをご覧ください。
次のコマンドを実行します。
CREATE EXTENSION bigquery_fdw;
外部サーバーを作成して、リモート BigQuery データセットの接続パラメータを定義します。
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;次のように置き換えます。
BIGQUERY_SERVER_NAME: 外部サーバーの固有識別子。これは、特定のデータベースで 1 回定義します。BIGQUERY_SERVER_NAMEは、実際のサーバー名に置き換えることができます。
CREATE USER MAPPINGコマンドを実行してユーザー マッピングを作成します。このコマンドは、外部サーバーに接続するときに使用する認証情報を指定します。CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;次のように置き換えます。
USERNAME: 外部テーブルにアクセスするデータベース ユーザー名または IAM ユーザー。BIGQUERY_SERVER_NAME: 作成した外部サーバーの固有識別子。
CREATE FOREIGN TABLEコマンドを使用して、BigQuery でアクセスするテーブルに対応する外部テーブルを定義します。このコマンドを使用すると、リモート テーブルの構造を定義できます。外部テーブルには、BigQuery のソーステーブルのすべての列または列のサブセットを含めることができます。CREATE FOREIGN TABLE TABLENAME ( COLUMNX_NAME DATE_TYPE, COLUMNX_NAME DATE_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset BIGQUERY_DATASET_NAME, table BIGQUERY_TABLE_NAME);次のように置き換えます。
TABLENAME: ローカル AlloyDB データベース内の外部テーブルの名前。COLUMNX_NAME: 列名は BigQuery ソースの列名と一致する必要があります。Xは、複数の列でテーブルを作成できることを示します。DATA_TYPE: 列のデータ型。BIGQUERY_SERVER_NAME: 作成した外部サーバーの固有識別子。BIGQUERY_PROJECT_ID: BigQuery データセットがあるプロジェクトの ID。BIGQUERY_DATASET_NAME: テーブルの BigQuery データセットの名前。BIGQUERY_TABLE_NAME: BigQuery テーブルの名前。
外部テーブルを作成したら、AlloyDB の任意のテーブルにクエリを実行するのと同じ方法で、このテーブルにクエリを実行できます。
必要なロール
AlloyDB クラスタのサービス アカウントに BigQuery データセットへの読み取りアクセス権を付与するには、次の権限が必要です。詳細については、AlloyDB に BigQuery データセットへのアクセス権を付与するをご覧ください。
AlloyDB に BigQuery データセットへのアクセス権を付与する
AlloyDB クラスタで BigQuery ビュー機能が有効になったら、AlloyDB クラスタのサービス アカウントに BigQuery データセットへのアクセス権を付与します。
gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。