Je souhaite résoudre les erreurs « COLUMN_NOT_FOUND » qui s'affichent lorsque j'exécute une requête Amazon Athena.
Brève description
Lorsqu'une colonne spécifiée ne figure pas dans la définition du schéma de la table, l'un des messages d'erreur suivants s'affiche :
- « COLUMN_NOT_FOUND: line 1:8: Column 'column_name' cannot be resolved or requester is not authorized to access requested resources »
- « COLUMN_NOT_FOUND: line 1:8: Relation contains no accessible columns »
Si vous ne disposez pas des autorisations AWS Lake Formation appropriées pour accéder à la table, l'un des messages d'erreur suivants s'affiche :
- « INVALID_VIEW: line 1:15: Failed analyzing stored view 'awsdatacatalog.database-name.view-name': line 1:8: Relation contains no accessible columns »
- « COLUMN_NOT_FOUND: Column 'column_name' cannot be resolved or requester is not authorized to access requested resources »
Remédiez au problème en fonction du message d'erreur reçu.
Résolution
Vérifier que la colonne figure dans la définition de la table
Il se peut qu'une colonne ne figure pas dans la définition du schéma de la table, car elle n'existe pas. Pour vérifier que la colonne existe dans le schéma de la table, utilisez la console AWS Glue ou l'AWS CLI.
Console AWS Glue
Procédez comme suit :
- Ouvrez la console AWS Glue.
- Dans le volet de navigation, sélectionnez Catalogue de données, puis Tables.
- Sélectionnez la table.
- Sous Schéma, consultez le schéma pour confirmer l'existence de la table.
AWS CLI
Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Exécutez la commande CLI get-table suivante :
aws glue get-table --database-name database-name --name table-name
Remarque : remplacez database-name et table-name par le nom de votre base de données et de votre table.
Ajouter la colonne à la définition de la table
Si la colonne n'existe pas dans la définition du schéma de la table, utilisez la console AWS Glue ou l'éditeur de requêtes Athena pour ajouter la colonne.
Console AWS Glue
Procédez comme suit :
- Ouvrez la console AWS Glue.
- Dans le volet de navigation, sélectionnez Catalogue de données, puis Tables.
- Sélectionnez la table, puis choisissez Modifier le schéma.
- Sélectionnez Ajouter.
- Dans la fenêtre Ajouter une entrée de schéma, ajoutez des valeurs aux sections suivantes :<br id=hardline_break/>
Dans Nº de colonne, entrez le numéro de colonne après lequel vous souhaitez insérer votre nouvelle colonne. Par exemple, si vous souhaitez que votre nouvelle colonne soit la troisième colonne du schéma de votre table, entrez 2.<br id=hardline_break/>
Dans Nom, entrez le nom de votre nouvelle colonne.<br id=hardline_break/>
Dans Type de données, choisissez un type de données.
- Choisissez Enregistrer, puis Enregistrer en tant que nouvelle version de table.
Éditeur de requêtes Athena
Procédez comme suit :
- Ouvrez la console Athena.
- Dans le volet de navigation, choisissez Éditeur de requêtes.
- Exécutez l'instruction DDL ALTER TABLE ADD COLUMNS suivante :
ALTER TABLE table-name ADD COLUMNS (column-name column-data-type)
Remarque : remplacez table-name par le nom de votre table. Remplacez également column-name et column-data-type par le nom et le type de données que vous souhaitez pour votre nouvelle colonne.
Accorder à Lake Formation les autorisations nécessaires pour interroger une table ou une vue dans le même compte AWS
Procédez comme suit :
- Ouvrez la console Lake Formation en tant qu'administrateur de lac de données.
- Dans le volet de navigation, sélectionnez Tables ou Vues.
- Sélectionnez la table ou la vue, puis choisissez Actions.
- Dans le menu déroulant, choisissez Octroyer.
- Sous Principaux, sélectionnez Utilisateurs et rôles IAM.
- Dans Utilisateurs et rôles IAM, sélectionnez l'utilisateur ou le principal Gestion des identités et des accès AWS (AWS IAM) auquel vous accordez l'accès.
- Sous Identifications LF ou ressources de catalogue, choisissez Ressources du catalogue de données nommé, puis sélectionnez le catalogue, la base de données et la table ou la vue.
- Dans Autorisations de table ou Afficher les autorisations et Autorisations octroyables, sélectionnez les autorisations d'accès que vous souhaitez accorder.<br id=hardline_break/>
Remarque : vous devez choisir Sélectionner et Décrire pour interroger la table ou la vue.
- Sélectionnez Octroyer.
Remarque : si vous utilisez des filtres de données, assurez-vous de configurer correctement l'accès au niveau des colonnes. Si vous choisissez Inclure les colonnes, assurez-vous d'inclure votre colonne. Si vous choisissez Exclure les colonnes, n'excluez pas votre colonne.
Accorder des autorisations pour interroger une table dans un autre compte
Tout d'abord, créez un lien de ressource. Accordez ensuite des autorisations pour le lien de ressource et la table cible.
Pour accorder des autorisations pour le lien de ressource, procédez comme suit :
- Dans le compte de destination, ouvrez la console Lake Formation en tant qu'administrateur du lac de données.
- Dans le volet de navigation, sélectionnez Tables.
- Sélectionnez le lien de ressource, puis choisissez Actions.
- Dans le menu déroulant, choisissez Octroyer.
- Sous Principaux, sélectionnez Utilisateurs et rôles IAM.
- Dans Utilisateurs et rôles IAM, sélectionnez l'utilisateur ou le principal IAM auquel vous accordez l'accès.
- Sous Identifications LF ou ressources de catalogue, sélectionnez le catalogue, la base de données et la table.
- Dans Autorisations relatives aux liens de ressources et Autorisations octroyables, choisissez Décrire.
- Sélectionnez Octroyer.
Pour accorder des autorisations sur la table cible, répétez les étapes précédentes. Choisissez Octroyer sur la cible pour l'étape 4, puis sélectionnez Sélectionner pour l'étape 8.
Informations connexes
Comment puis-je résoudre l’erreur « Column not found » avec le connecteur Athena DynamoDB ?