Comment résoudre l'erreur de syntaxe « fonction non enregistrée » dans Athena ?

Date de la dernière mise à jour : 22/05/2020

Lorsque j'exécute une opération SELECT dans Amazon Athena, je reçois une erreur similaire à celle-ci : « SYNTAX_ERROR: line 1:8: Function function_name not registered ».

Solution

Cette erreur se produit généralement lorsque vous essayez d'utiliser une fonction qu'Athena ne prend pas en charge. Pour obtenir la liste des fonctions prises en charge par Athena, consultez Fonctions Presto dans Amazon Athena. Vous pouvez également exécuter une instruction SHOW FUNCTIONS. Voici un exemple partiel de la sortie :

    Function   Return Type     Argument Types   Function Type   Deterministic   Description
1    abs        bigint          bigint           scalar          true            absolute value
2    abs        decimal(p,s)    decimal(p,s)     scalar          true            absolute value
3    abs        double          double

Si Athena ne prend pas en charge la fonction que vous souhaitez utiliser, pensez à écrire une fonction définie par l'utilisateur (UDF) dans Athena. Les UDF vous permettent de créer des fonctions personnalisées pour traiter des enregistrements ou des groupes d'enregistrements. Une fonction UDF accepte les paramètres, effectue la tâche, puis renvoie un résultat. Pour obtenir des exemples et plus d'informations sur les fonctions définies par l'utilisateur, consultez Interrogation avec les fonctions définies par l'utilisateur (version préliminaire).