Cette rubrique explique comment créer une fonction définie par l'utilisateur (UDF) dans un projet MaxCompute.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Ajouté les ressources requises à votre projet MaxCompute à l'aide de la commande
ADD JAR. Pour plus d'informations, consultez ADD JAR.
Limitations
Les noms de fonction doivent être uniques au sein d'un projet. Vous ne pouvez pas créer une fonction portant le même nom qu'une fonction existante.
Les UDF ne peuvent pas remplacer les fonctions intégrées de MaxCompute. Seul le propriétaire du projet est autorisé à utiliser des UDF pour remplacer des fonctions intégrées. Si une UDF remplace une fonction intégrée, un avertissement s'affiche dans la section Summary de Logview pour la tâche après l'exécution de l'instruction SQL.
Syntaxe
CREATE FUNCTION <function_name> AS <'package_to_class'> USING <'resource_list'>;
Paramètres
|
Paramètre |
Obligatoire |
Description |
|
|
Oui |
Nom de l'UDF à créer. Il doit être unique au sein du projet. |
|
|
Oui |
Classe de l'UDF. La casse est prise en compte. Le nom doit être entouré de guillemets simples ( |
|
|
Oui |
Ressources utilisées par l'UDF. La liste doit être entourée de guillemets simples ( |
Remarques sur package_to_class pour les UDF Python
Le nom du script Python correspond au nom de ressource sous-jacent qui identifie la ressource de manière unique. Par exemple, si vous téléchargez une ressource sous le nom pyudf_test.py puis que vous la renommez en PYUDF_TEST.py dans DataStudio ou que vous la remplacez via le client MaxCompute, le nom de ressource sous-jacent reste pyudf_test.py. Lors de l'enregistrement de l'UDF, le nom de classe doit donc être pyudf_test.SampleUDF. Exécutez LIST RESOURCES; pour afficher les noms sous-jacents de toutes les ressources.
Remarques sur resource_list
La liste doit inclure les ressources contenant le code de l'UDF. Assurez-vous que ces ressources ont bien été téléchargées dans MaxCompute.
Si l'UDF appelle l'API Distributed Cache pour lire des fichiers de ressources, incluez également ces fichiers de ressources dans la liste.
Si le schéma est activé et que vous devez utiliser des ressources provenant d'autres projets, consultez la section Work with objects in a schema.
Exemples
Créer une UDF Java
L'exemple suivant crée la fonction my_lower. La classe UDF Java org.alidata.odps.udf.examples.Lower se trouve dans my_lower.jar.
CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
Créer une UDF Python depuis un autre projet
L'exemple suivant crée la fonction my_lower. La classe UDF Python MyLower est définie dans pyudf_test.py au sein du projet test_project.
CREATE FUNCTION my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';
Créer une UDF avec plusieurs dépendances de ressources
L'exemple suivant crée la fonction test_udtf. La classe UDF Java com.aliyun.odps.examples.udf.UDTFResource se trouve dans udtfexample1.jar. La fonction dépend également d'une ressource FILE (file_resource.txt), d'une ressource Table (table_resource1) et d'une ressource Archive (test_archive.zip).
CREATE FUNCTION test_udtf AS 'com.aliyun.odps.examples.udf.UDTFResource' USING 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';
Étapes suivantes
FUNCTION : Créez une fonction SQL temporaire qui s'applique uniquement au script SQL actuel et n'est pas stockée dans le système de métadonnées MaxCompute.
DROP FUNCTION : Supprimez une UDF existante d'un projet MaxCompute.
DELETE FUNCTION : Supprimez une fonction à l'aide de la méthode
delete_function()d'un objet d'entrée MaxCompute.DESC FUNCTION : Consultez les détails d'une UDF, y compris son nom, son propriétaire, sa date de création, le nom de sa classe et la liste des ressources.
LIST FUNCTIONS : Affichez toutes les UDF d'un projet MaxCompute.
UPDATE FUNCTION : Mettez à jour une UDF à l'aide de la méthode
updatede MaxCompute.