本文为您介绍如何注册、注销函数以及查看函数清单。

您可以通过客户端使用常用命令对函数进行操作,也可以通过DataWorks可视在线数据开发工具对资源进行新建、搜索等操作。

注册函数

  • 命令格式
    CREATE FUNCTION <function_name> AS <'package_to_class'> USING <'resource_list'>;
  • 参数说明
    • function_name:新建的UDF函数名称。函数名称需要唯一,同名函数只能注册一次。
      说明 通常,您的自建函数无法覆盖系统内建函数。只有项目空间的所有者(Project Owner)才有权利覆盖内建函数。如果您使用了覆盖内建函数的自定义函数,在SQL执行结束后,会在Summary中打印出Warning信息。
    • package_to_class:包名,此名称须用英文引号(' ')引起。
      • Java UDF,此名称为从顶层包名一直到实现UDF类的类名。
      • Python UDF,此名称为Python脚本名.类名
    • resource_list:UDF所用到的资源列表。
      • 此资源列表必须包括UDF代码所在的资源,且资源已经上传至MaxCompute。
      • 如果您的代码通过Distributed Cache接口读取资源文件,此列表中还要包括UDF所读取的资源文件列表。
      • 资源列表由多个资源名组成,资源名之间由英文逗号(,)分隔,且资源列表必须用英文引号(' ')引起。
      • 如果需要指定资源所在的项目空间,写法为<project_name>/resources/<resource_name>
  • 示例
    • 创建函数my_lower。假设Java UDF类org.alidata.odps.udf.examples.Lowermy_lower.jar中。
      odps@ project_name>CREATE FUNCTION my_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
    • 创建函数my_lower。假设Python UDF MyLower在项目空间test_project的脚本pyudf_test.py中。
      odps@ project_name>CREATE FUNCTION my_lower AS 'pyudf_test.MyLower' USING 'test_project/resources/pyudf_test.py';
    • 创建函数test_udtf。假设Java UDF类com.aliyun.odps.examples.udf.UDTFResource是在udtfexample1.jar中,同时该函数还依赖FILE资源file_resource.txt、Table资源table_resource1以及Archive资源test_archive.zip
      odps@ project_name>CREATE FUNCTION test_udtf AS 'com.aliyun.odps.examples.udf.UDTFResource' USING 'udtfexample1.jar, file_resource.txt, table_resource1,test_archive.zip';

注销函数

  • 命令格式
    DROP FUNCTION <function_name>;
  • 参数说明

    function_name:已存在的函数名称。

  • 示例
    odps@ project_name>DROP FUNCTION my_lower;

查看函数

  • 命令格式
    DESC FUNCTION <function_name>;
  • 参数说明

    function_name:已存在的函数名称。

  • 示例
    odps@ project_name>DESC FUNCTION my_lower;

查看函数清单

  • 查看当前项目空间中的所有自定义函数。
    LIST FUNCTIONS; 
  • 查看指定项目空间下的所有自定义函数。
    LIST FUNCTIONS -p project_name;