排查 BigQuery 外部数据封装容器扩展程序

本页介绍了如何解决 bigquery_fdw 扩展程序的常见问题。 如需了解如何使用 BigQuery 外部数据封装容器访问数据,请参阅配置 AlloyDB 对 BigQuery 中实时数据的访问权限

扩展程序和元数据问题

本部分列出了您可能会遇到的扩展程序和元数据错误,并提供了有关如何修复每个错误的建议。

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 for PostgreSQL 集群服务帐号缺少 BigQuery 数据查看器权限。

建议的修复方法

如需解决此问题,请为主要集群 service_account_email 提供以下任一角色:

  • BigQuery Data Viewer (roles/bigquery.dataViewer)
  • 包含 bigquery.tables.getbigquery.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 Read Session User (roles/bigquery.readSessionUser)
  • 包含 bigquery.readsessions.createbigquery.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 Job User (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 实体类型,例如标准表。