BigQuery 外部データ ラッパー拡張機能のトラブルシューティング

bigquery_fdw 拡張機能を使用するクエリが失敗した場合は、次のエラー メッセージと推奨される修正方法を使用して、AlloyDB for PostgreSQL から BigQuery データへのリアルタイム アクセスを復元します。一般的な原因としては、拡張機能が無効になっている、クラスタ サービス アカウントに BigQuery 権限がない、BigQuery の列名またはデータ型と一致しない外部テーブル定義などがあります。

BigQuery 外部データラッパーを使用してデータにアクセスする方法については、BigQuery のリアルタイム データへの AlloyDB for PostgreSQL アクセスを構成するをご覧ください。

拡張機能とメタデータに関する問題

このセクションでは、発生する可能性がある拡張機能とメタデータのエラーを一覧表示し、それぞれのエラーの修正方法について説明します。

bigquery_fdw 拡張機能が無効になっている

推奨の解決方法

この問題を解決する方法は次のとおりです。

  1. データベース フラグ bigquery_fdw.enabled が on に設定されていることを確認します。これは、次のいずれかの方法で確認できます。

    SHOW bigquery_fdw.enabled;
    
  2. bigquery_fdw.enabled フラグが off の場合は、bigquery_fdw.enabled を on に設定します。

権限とアクセスに関する問題

このセクションでは、発生する可能性がある権限とアクセスに関するエラーと、推奨される修正方法について説明します。

アクセスが拒否されました: テーブル権限 bigquery.tables.get が拒否されました

拡張機能が BigQuery 読み取りセッションを作成できませんでした。次のエラーが発生しました。

Error in non-idempotent operation: Access Denied: Table TABLE_NAME: Permission bigquery.tables.get denied on table TABLE_NAME (or it may not exist).

これは、AlloyDB クラスタのサービス アカウントに BigQuery データ閲覧者の権限がないことを示しています。

推奨の解決方法

この問題を解決するには、プライマリ クラスタ service_account_email に次のいずれかのロールを付与します。

  • BigQuery データ閲覧者(roles/bigquery.dataViewer)
  • bigquery.tables.get 権限と bigquery.tables.getData 権限を含むカスタムロール。

bigquery.readsessions.create へのアクセスが拒否されました

拡張機能が BigQuery 読み取りセッションを作成できませんでした。次のエラーが発生しました。

Error in non-idempotent operation: request failed: the user does not have 'bigquery.readsessions.create' permission for PROJECT_NAME.

これは、AlloyDB クラスタのサービス アカウントに BigQuery 読み取りセッション ユーザーの権限がないことを示しています。

推奨の解決方法

この問題を解決するには、プライマリ クラスタの service_account_email に次のいずれかのロールを付与します。

  • BigQuery 読み取りセッション ユーザー(roles/bigquery.readSessionUser)
  • bigquery.readsessions.create 権限と bigquery.readsessions.getData 権限を含むカスタムロール。

ユーザーに bigquery.jobs.create 権限がない

拡張機能が BigQuery 読み取りセッションを作成できませんでした。次のエラーが発生しました。

Error in non-idempotent operation: Access Denied: Project PROJECT_NAME: User does not have bigquery.jobs.create permission in project PROJECT_NAME.

推奨の解決方法

この問題を解決するには、AlloyDB クラスタ service_account_email に次のいずれかのロールを付与します。

  • BigQuery ジョブユーザー(roles/bigquery.jobUser)。
  • bigquery.jobs.create 権限を含むカスタムロール。

構成とデータ型の問題

このセクションでは、発生する可能性のある構成エラーとデータ型エラーを一覧表示し、推奨される修正方法について説明します。

選択したフィールドがテーブル スキーマに存在しません

次の問題が発生しました。

Error in non-idempotent operation: request failed: The following selected fields do not exist in the table schema: POSTGRES_COLUMN_NAME(S).
Error in non-idempotent operation: Unrecognized name: POSTGRES_COLUMN_NAME(S);

これは、外部テーブル定義の列名が正しくないことを示します。

推奨の解決方法

この問題を解決するには、定義で指定された対応する BigQuery テーブルに、正確な列名(大文字と小文字を区別)が存在することを確認します。

型マッピングの入力構文が無効

オペレーションが失敗し、次のエラーが返されます。

ERROR: invalid input syntax for type POSTGRES_COLUMN_DATA_TYPE: BIGQUERY_COLUMN_VALUE_RECEIVED.

これは、外部テーブル定義の列データ型のマッピングが正しくないことを示します。

推奨の解決方法

この問題を解決するには、データ型のマッピングに互換性があることを確認します。たとえば、BigQuery の文字列列を PostgreSQL の整数列にマッピングすることはできません。詳細については、データ型のマッピングをご覧ください。

サポートされていない BigQuery の列データ型

次の問題が発生しました。

ERROR: bigquery_fdw extension encountered internal error for column: POSTGRES_COLUMN_DATA_TYPE. Only avro logical type: AVRO_BIGQUERY_LOGICAL_TYPE is supported for avro type: AVRO_BIGQUERY_DATA_TYPE.
encountered internal error for column:POSTGRES_COLUMN_NAME. Data type: BIGQUERY_DATA_TYPE is not supported.

これは、クエリ対象の列のデータ型がサポートされていないことを示します。

推奨の解決方法

この問題を解決するには、データ型のマッピングをご覧ください。

テーブル以外のエンティティは読み取れません

拡張機能が次のエラーで失敗しました。

ERROR: bigquery_fdw extension failed to create BigQuery read session with error: Error in non-idempotent operation: request failed: non-table entities cannot be read with the storage API.

これは、クエリ対象の BigQuery テーブルタイプがサポートされていないことを示します。

推奨の解決方法

この問題を解決するには、標準テーブルなど、サポートされている BigQuery エンティティ タイプに対してクエリを実行していることを確認します。