Résoudre les problèmes liés à l'extension BigQuery Foreign Data Wrapper

Si les requêtes qui utilisent l'extension bigquery_fdw échouent, utilisez les messages d'erreur et les correctifs recommandés suivants pour restaurer l'accès en temps réel à vos données BigQuery depuis AlloyDB pour PostgreSQL. Les causes courantes incluent une extension désactivée, des autorisations BigQuery manquantes pour le compte de service du cluster et des définitions de tables externes qui ne correspondent pas aux noms de colonnes ou aux types de données dans BigQuery.

Pour en savoir plus sur l'utilisation du wrapper de données étrangères BigQuery pour accéder aux données, consultez Configurer l'accès d'AlloyDB pour PostgreSQL aux données en temps réel dans BigQuery.

Problèmes liés aux extensions et aux métadonnées

Cette section répertorie les erreurs d'extension et de métadonnées que vous pouvez rencontrer et fournit des suggestions pour les résoudre.

L'extension bigquery_fdw est désactivée

Correction recommandée

Pour résoudre ce problème, procédez comme suit :

  1. Assurez-vous que l'indicateur de base de données bigquery_fdw.enabled est défini sur on. Vous pouvez le vérifier de l'une des manières suivantes :

    SHOW bigquery_fdw.enabled;
    
  2. Si l'option bigquery_fdw.enabled est définie sur off, définissez bigquery_fdw.enabled sur on.

Problèmes d'autorisation et d'accès

Cette section répertorie les erreurs d'autorisation et d'accès que vous pouvez rencontrer et fournit des solutions recommandées.

Accès refusé : autorisation bigquery.tables.get refusée pour la table

L'extension n'a pas pu créer de session de lecture BigQuery. L'erreur suivante s'est produite :

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

Cela indique que le compte de service du cluster AlloyDB ne dispose pas des autorisations de lecteur de données BigQuery.

Correction recommandée

Pour résoudre ce problème, attribuez l'un des rôles suivants au cluster principal service_account_email :

  • Lecteur de données BigQuery (roles/bigquery.dataViewer)
  • Un rôle personnalisé contenant les autorisations bigquery.tables.get et bigquery.tables.getData.

Accès bigquery.readsessions.create refusé

L'extension n'a pas pu créer de session de lecture BigQuery. L'erreur suivante s'est produite :

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

Cela indique que le compte de service du cluster AlloyDB ne dispose pas des autorisations d'utilisateur de session de lecture BigQuery.

Correction recommandée

Pour résoudre ce problème, attribuez l'un des rôles suivants au service_account_email du cluster principal :

  • Utilisateur de sessions de lecture BigQuery (roles/bigquery.readSessionUser)
  • Un rôle personnalisé contenant les autorisations bigquery.readsessions.create et bigquery.readsessions.getData.

L'utilisateur ne dispose pas de l'autorisation bigquery.jobs.create

L'extension n'a pas pu créer de session de lecture BigQuery. L'erreur suivante s'est produite :

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

Correction recommandée

Pour résoudre ce problème, attribuez l'un des rôles suivants au cluster AlloyDB service_account_email :

  • Utilisateur de job BigQuery (roles/bigquery.jobUser).
  • Un rôle personnalisé contenant l'autorisation bigquery.jobs.create.

Problèmes de configuration et de type de données

Cette section liste les erreurs de configuration et de type de données que vous pouvez rencontrer, et fournit des solutions recommandées.

Les champs sélectionnés n'existent pas dans le schéma de la table

Les problèmes suivants se sont produits :

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);

Cela indique des noms de colonnes incorrects dans la définition de la table externe.

Correction recommandée

Pour résoudre ce problème, assurez-vous que le nom exact de la colonne (sensible à la casse) existe dans la table BigQuery correspondante spécifiée dans la définition.

Syntaxe d'entrée non valide pour le mappage de type

L'opération a échoué avec l'erreur suivante :

ERROR: invalid input syntax for type POSTGRES_COLUMN_DATA_TYPE: BIGQUERY_COLUMN_VALUE_RECEIVED.

Cela indique un mappage de type de données de colonne incorrect dans la définition de la table externe.

Correction recommandée

Pour résoudre ce problème, assurez-vous que le mappage des types de données est compatible. Par exemple, une colonne de chaîne dans BigQuery ne peut pas être mappée à une colonne d'entiers dans PostgreSQL. Pour en savoir plus, consultez Mappages des types de données.

Type de données de colonne BigQuery non compatible

Les problèmes suivants se sont produits :

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.

Cela indique que le type de données de la colonne interrogée n'est pas compatible.

Correction recommandée

Pour résoudre ce problème, consultez Mappages de types de données.

Impossible de lire les entités qui ne sont pas des tables

L'extension a échoué avec l'erreur suivante :

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.

Cela indique que le type de table BigQuery interrogé n'est pas compatible.

Correction recommandée

Pour résoudre ce problème, assurez-vous d'interroger un type d'entité BigQuery compatible, tel qu'une table standard.