bigquery_fdw 拡張機能を使用するクエリが失敗した場合は、次のエラー メッセージと推奨される修正方法を使用して、AlloyDB for PostgreSQL から BigQuery データへのリアルタイム アクセスを復元します。一般的な原因としては、拡張機能が無効になっている、クラスタ サービス アカウントに BigQuery 権限がない、BigQuery の列名またはデータ型と一致しない外部テーブル定義などがあります。
BigQuery 外部データラッパーを使用してデータにアクセスする方法については、BigQuery のリアルタイム データへの AlloyDB for PostgreSQL アクセスを構成するをご覧ください。
拡張機能とメタデータに関する問題
このセクションでは、発生する可能性がある拡張機能とメタデータのエラーを一覧表示し、それぞれのエラーの修正方法について説明します。
bigquery_fdw 拡張機能が無効になっている
推奨の解決方法
この問題を解決する方法は次のとおりです。
データベース フラグ
bigquery_fdw.enabledがonに設定されていることを確認します。これは、次のいずれかの方法で確認できます。- インスタンスの現在のデータベース フラグを表示する。
- インスタンスに接続し、
psqlで次のコマンドを実行します。
SHOW bigquery_fdw.enabled;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 エンティティ タイプに対してクエリを実行していることを確認します。