Todos os produtos
Search
Central de documentação

MaxCompute:Operações com funções

Última atualização: Jun 26, 2026

O MaxCompute oferece suporte a dois tipos de funções: integradas e definidas pelo usuário (UDFs). As funções integradas estão disponíveis imediatamente, sem necessidade de configuração. Já as UDFs exigem registro antes da chamada em instruções SQL.

Este tópico aborda operações comuns de gerenciamento de UDFs: criação, exclusão e visualização.

Visão geral das operações

Operação

Permissão necessária

Plataformas

Crie uma UDF

Permissão de escrita em funções

Cliente MaxCompute, console DataWorks, MaxCompute Studio

Exclua uma UDF

Permissão de exclusão em funções

Visualize uma UDF

Permissão de leitura em funções

Listar todas as UDFs

Permissão de listagem em objetos do projeto

Listar todas as funções integradas

Permissão de listagem em objetos do projeto

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um recurso JAR ou Python contendo o código da UDF, carregado no MaxCompute

  • As permissões necessárias para a operação (consulte a tabela acima)

Crie uma UDF

Registra uma UDF em um projeto do MaxCompute para permitir chamadas em instruções SQL.

Limitações

  • Os nomes das funções devem ser exclusivos no projeto. Não é permitido criar uma função com o mesmo nome de outra já existente.

  • UDFs não podem sobrescrever funções integradas. Somente o proprietário do projeto pode registrar uma UDF com o mesmo nome de uma função integrada. Se essa UDF for invocada, um aviso aparecerá no Logview Summary após a execução do job SQL.

Sintaxe

create function <function_name> as '<package_to_class>' using '<resource_list>';

Parâmetros

Parâmetro

Obrigatório

Descrição

function_name

Sim

Nome da UDF a ser criada. Deve ser exclusivo no projeto.

package_to_class

Sim

Caminho totalmente qualificado da classe da UDF. Diferencia maiúsculas de minúsculas. Deve estar entre aspas simples ('). Para UDF Java, especifique o caminho completo desde o pacote de nível superior até o nome da classe da UDF. Para UDF Python, use o formato script_name.ClassName.

resource_list

Sim

Lista de nomes de recursos separados por vírgula, entre aspas simples ('). Deve incluir o recurso que contém o código da UDF. Se a UDF chamar a API Distributed Cache para ler arquivos de recurso, inclua também esses arquivos. Para referenciar um recurso de outro projeto, utilize o formato <project_name>/resources/<resource_name>.

Nota

Nomes de recursos Python não diferenciam maiúsculas de minúsculas na camada subjacente. O nome do recurso subjacente é determinado pelo nome usado durante o primeiro upload. Por exemplo, se você carregar inicialmente pyudf_test.py e depois renomeá-lo para PYUDF_TEST.py, o nome do recurso subjacente permanecerá pyudf_test.py. Ao registrar a UDF, o nome da classe deve corresponder ao nome subjacente: pyudf_test.SampleUDF. Execute list resources; para verificar os nomes subjacentes de todos os recursos.

Exemplos

Exemplo 1: UDF Java

Crie a função my_lower usando a classe Java org.alidata.odps.udf.examples.Lower em my_lower.jar.

create function my_lower as 'org.alidata.odps.udf.examples.Lower' using 'my_lower.jar';

Exemplo 2: UDF Python de outro projeto

Crie a função my_lower usando a classe Python MyLower no script pyudf_test.py, que é um recurso em test_project.

create function my_lower as 'pyudf_test.MyLower' using 'test_project/resources/pyudf_test.py';

Exemplo 3: Função com valor de tabela definida pelo usuário (UDTF) Java com múltiplos recursos

Crie test_udtf utilizando a classe com.aliyun.odps.examples.udf.UDTFResource em udtfexample1.jar. A função também depende de um recurso de arquivo, um recurso de tabela e um recurso de arquivo compactado.

create function test_udtf as 'com.aliyun.odps.examples.udf.UDTFResource' using 'udtfexample1.jar, file_resource.txt, table_resource1, test_archive.zip';

Exclua uma UDF

Remove uma UDF existente de um projeto do MaxCompute.

Sintaxe

drop function <function_name>;

Parâmetros

Parâmetro

Obrigatório

Descrição

function_name

Sim

Nome da UDF a ser excluída.

Exemplo

-- Delete the my_lower function.
drop function my_lower;

Visualize uma UDF

Retorna os metadados de uma UDF específica: nome, proprietário, hora de criação, classe e lista de recursos.

Sintaxe

desc function <function_name>;

Parâmetros

Parâmetro

Obrigatório

Descrição

function_name

Sim

Nome da UDF a ser inspecionada.

Campos de saída

Campo

Descrição

Name

Nome da UDF.

Owner

Conta que registrou a UDF.

Created Time

Horário de criação da UDF.

Class

Caminho da classe da UDF. Diferencia maiúsculas de minúsculas.

Resources

Lista de recursos associados à UDF.

Exemplo

-- View details of the my_lower function.
desc function my_lower;

Saída:

Name                                    my_lower
Owner                                   ALIYUN$****
Created Time                            2020-06-18 15:50:19
Class                                   org.alidata.odps.udf.examples.Lower
Resources                               project_name/my_lower.jar

Listar todas as UDFs

Retorna todas as UDFs registradas em um projeto do MaxCompute.

Sintaxe

Use um dos seguintes comandos:

list functions [-p <project_name>];
show functions;

Parâmetros

Parâmetro

Obrigatório

Descrição

project_name

Não

Nome do projeto MaxCompute a ser consultado. Se omitido, o sistema usa o projeto atual. Suportado apenas com list functions.

Exemplo

list functions;

Saída:

Name              Owner                                        Create Time           Class                             Resources
ipv4_ipv6_aton    ALIYUN$****@aliyun.com 2021-11-15 13:42:14   com.aliyun.odps.udf.udfFunction.IpLocation ipv4.txt,ipv6.txt,udf-1.0-SNAPSHOT.jar
Lower_test        ALIYUN$****@aliyun.com 2021-08-25 15:51:22   com.aliyun.odps.udf.example.Lower udf-1.0-SNAPSHOT.jar
my_add            ALIYUN$****@aliyun.com 2021-05-08 11:26:02
my_index          ALIYUN$****@aliyun.com 2021-08-25 12:01:05   com.aliyun.odps.examples.udf.UdfArray udf-1.0-SNAPSHOT.jar
my_sum            ALIYUN$****@aliyun.com 2021-05-08 10:24:58
my_udtf           ALIYUN$****@aliyun.com 2021-02-23 11:37:30   com.aliyun.odps.examples.udf.UDTFResource udf-1.0-SNAPSHOT.jar
numpy             ALIYUN$****@aliyun.com 2020-11-11 14:12:50   numpy.TryImport                   numpy.py,numpy-1.19.4-cp37-cp37m-manylinux1_x86_64.zip
ST_Aggr_ConvexHull ALIYUN$****@aliyun.com 2021-03-18 17:06:29   com.esri.hadoop.hive.ST_Aggr_ConvexHull esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Aggr_Intersection ALIYUN$****@aliyun.com 2021-03-18 17:06:29   com.esri.hadoop.hive.ST_Aggr_Intersection esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Aggr_Union     ALIYUN$****@aliyun.com 2021-03-18 17:06:30   com.esri.hadoop.hive.ST_Aggr_Union esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Area           ALIYUN$****@aliyun.com 2021-03-18 17:06:30   com.esri.hadoop.hive.ST_Area      esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsBinary       ALIYUN$****@aliyun.com 2021-03-18 17:06:30   com.esri.hadoop.hive.ST_AsBinary  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsGeoJson      ALIYUN$****@aliyun.com 2021-03-18 17:06:49   com.esri.hadoop.hive.ST_AsGeoJson esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsJson         ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_AsJson    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsShape        ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_AsShape   esri-geometry-api.jar,spatial-sdk-hive.jar
ST_AsText         ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_AsText    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Bin            ALIYUN$****@aliyun.com 2021-03-18 17:06:50   com.esri.hadoop.hive.ST_Bin       esri-geometry-api.jar,spatial-sdk-hive.jar
ST_BinEnvelope    ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_BinEnvelope esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Boundary       ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Boundary  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Buffer         ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Buffer    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Centroid       ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Centroid  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Contains       ALIYUN$****@aliyun.com 2021-03-18 17:07:01   com.esri.hadoop.hive.ST_Contains  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_ConvexHull     ALIYUN$****@aliyun.com 2021-03-18 17:07:13   com.esri.hadoop.hive.ST_ConvexHull esri-geometry-api.jar,spatial-sdk-hive.jar
ST_CoordDim       ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_CoordDim  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Crosses        ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_Crosses   esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Difference     ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_Difference esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Dimension      ALIYUN$****@aliyun.com 2021-03-18 17:07:14   com.esri.hadoop.hive.ST_Dimension esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Disjoint       ALIYUN$****@aliyun.com 2021-03-18 17:07:31   com.esri.hadoop.hive.ST_Disjoint  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Distance       ALIYUN$****@aliyun.com 2021-03-18 17:07:31   com.esri.hadoop.hive.ST_Distance  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_EndPoint       ALIYUN$****@aliyun.com 2021-03-18 17:07:31   com.esri.hadoop.hive.ST_EndPoint  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Envelope       ALIYUN$****@aliyun.com 2021-03-18 17:07:32   com.esri.hadoop.hive.ST_Envelope  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_EnvIntersects  ALIYUN$****@aliyun.com 2021-03-18 17:07:32   com.esri.hadoop.hive.ST_EnvIntersects esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Equals         ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_Equals    esri-geometry-api.jar,spatial-sdk-hive.jar
ST_ExteriorRing   ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_ExteriorRing esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeodesicLengthWGS84 ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_GeodesicLengthWGS84 esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomCollection ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_GeomCollection esri-geometry-api.jar,spatial-sdk-hive.jar
ST_Geometry       ALIYUN$****@aliyun.com 2021-03-18 17:07:44   com.esri.hadoop.hive.ST_Geometry  esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeometryN      ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeometryN esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeometryType   ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeometryType esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromGeoJson ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeomFromGeoJson esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromJson   ALIYUN$****@aliyun.com 2021-03-18 17:07:55   com.esri.hadoop.hive.ST_GeomFromJson esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromShape  ALIYUN$****@aliyun.com 2021-03-18 17:07:56   com.esri.hadoop.hive.ST_GeomFromShape esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromText   ALIYUN$****@aliyun.com 2021-03-18 17:08:10   com.esri.hadoop.hive.ST_GeomFromText esri-geometry-api.jar,spatial-sdk-hive.jar
ST_GeomFromWKB    ALIYUN$****@aliyun.com 2021-03-18 17:08:10   com.esri.hadoop.hive.ST_GeomFromWKB esri-geometry-api.jar,spatial-sdk-hive.jar

As colunas de saída são:

Coluna

Descrição

Name

Nome da UDF.

Owner

Conta que registrou a UDF.

Create Time

Horário de criação da UDF.

Class

Caminho da classe da UDF. Vazio se a informação da classe não estiver disponível.

Resources

Recursos associados à UDF. Vazio se nenhum recurso estiver registrado.

Listar todas as funções integradas

Retorna informações sobre as funções integradas disponíveis no MaxCompute, incluindo assinaturas de função e tipos de dados suportados.

Nota

Este comando requer o cliente MaxCompute V0.43.0 ou posterior.

Sintaxe

show builtin functions [<function_name>];

Parâmetros

Parâmetro

Obrigatório

Descrição

function_name

Não

Nome de uma função integrada específica a ser pesquisada. Se omitido, o sistema retorna todas as funções integradas.

Exemplo

show builtin functions;

Saída (parcial):

ID = 20230307081023424gef2hwowr1
::ABS   SCALAR  DECIMAL(?,?) ABS(DECIMAL(?,?) arg0),DOUBLE ABS(DOUBLE arg0),BIGINT ABS(BIGINT arg0),INT ABS(INT arg0)
::ACOS  SCALAR  DOUBLE ACOS(DOUBLE arg0),DOUBLE ACOS(DECIMAL(?,?) arg0)
::ADD_MONTHS    SCALAR  STRING ADD_MONTHS(DATE arg0, BIGINT arg1),STRING ADD_MONTHS(TIMESTAMP arg0, BIGINT arg1),STRING ADD_MONTHS(STRING arg0, BIGINT arg1)
::ALL_MATCH     SCALAR  BOOLEAN ALL_MATCH(ARRAY<T> arg0, java.util.function.Function<T, java.lang.Boolean> arg1)
::ANY_MATCH     SCALAR  BOOLEAN ANY_MATCH(ARRAY<T> arg0, java.util.function.Function<T, java.lang.Boolean> arg1)
::ANY_VALUE     AGGREGATOR      T ANY_VALUE([DISTINCT] T arg1)
::APPROX_DISTINCT       AGGREGATOR      BIGINT APPROX_DISTINCT([DISTINCT] P arg1, DOUBLE arg2),BIGINT APPROX_DISTINCT([DISTINCT] P arg1)
::ARG_MAX       AGGREGATOR      R ARG_MAX([DISTINCT] T arg1, R arg2)
::ARG_MIN       AGGREGATOR      R ARG_MIN([DISTINCT] T arg1, R arg2)
::ARRAY SCALAR  ARRAY<STRING> ARRAY(),ARRAY<T> ARRAY(T arg0...)
::ARRAYS_OVERLAP        SCALAR  BOOLEAN ARRAYS_OVERLAP(ARRAY<T> arg0, ARRAY<T> arg1)
::ARRAYS_ZIP    SCALAR  null
::ARRAY_CONTAINS        SCALAR  BOOLEAN ARRAY_CONTAINS(ARRAY<T> arg0, T arg1)
::ARRAY_DISTINCT        SCALAR  ARRAY<T> ARRAY_DISTINCT(ARRAY<T> arg0)
::ARRAY_EXCEPT  SCALAR  ARRAY<T> ARRAY_EXCEPT(ARRAY<T> arg0, ARRAY<T> arg1)
::ARRAY_INTERSECT       SCALAR  null
::ARRAY_JOIN    SCALAR  STRING ARRAY_JOIN(ARRAY<STRING> arg0, STRING arg1, STRING arg2),STRING ARRAY_JOIN(ARRAY<STRING> arg0, STRING arg1)
::ARRAY_MAX     SCALAR  T ARRAY_MAX(ARRAY<T> arg0)
::ARRAY_MIN     SCALAR  T ARRAY_MIN(ARRAY<T> arg0)
::ARRAY_NORMALIZE       SCALAR  ARRAY<FLOAT> ARRAY_NORMALIZE(ARRAY<FLOAT> arg0, FLOAT arg1),ARRAY<DOUBLE> ARRAY_NORMALIZE(ARRAY<DOUBLE> arg0, DOUBLE arg1)
::ARRAY_POSITION        SCALAR  BIGINT ARRAY_POSITION(ARRAY<T> arg0, T arg1, BIGINT arg2),BIGINT ARRAY_POSITION(ARRAY<T> arg0, T arg1)
::ARRAY_REDUCE  SCALAR  OUT ARRAY_REDUCE(ARRAY<IN> arg0, BUF arg1, java.util.function.BiFunction<BUF, IN, BUF> arg2, java.util.function.Function<BUF, OUT> arg3)
::ARRAY_REMOVE  SCALAR  ARRAY<T> ARRAY_REMOVE(ARRAY<T> arg0, T arg1)
::ARRAY_REPEAT  SCALAR  ARRAY<T> ARRAY_REPEAT(T arg0, BIGINT arg1)
::ARRAY_SORT    SCALAR  ARRAY<T> ARRAY_SORT(ARRAY<T> arg0, java.util.function.BiFunction<T, T, java.lang.Long> arg1)
::ARRAY_UNION   SCALAR  ARRAY<T> ARRAY_UNION(ARRAY<T> arg0, ARRAY<T> arg1)
::ASCII SCALAR  BIGINT ASCII(STRING arg0)
::ASIN  SCALAR  DOUBLE ASIN(DOUBLE arg0),DOUBLE ASIN(DECIMAL(?,?) arg0)
::ATAN  SCALAR  DOUBLE ATAN(DECIMAL(?,?) arg0),DOUBLE ATAN(DOUBLE arg0)
::ATAN2 SCALAR  DOUBLE ATAN2(DECIMAL(?,?) arg0, DECIMAL(?,?) arg1),DOUBLE ATAN2(DOUBLE arg0, DOUBLE arg1)
::AVG   AGGREGATOR      DECIMAL(?,?) AVG([DISTINCT] DECIMAL(?,?) arg1),DOUBLE AVG([DISTINCT] DOUBLE arg1)
::AVG   WINDOW  DOUBLE AVG([DISTINCT] DOUBLE arg0),DECIMAL(?,?) AVG([DISTINCT] DECIMAL(?,?) arg0)
::BASE64        SCALAR  STRING BASE64(BINARY arg0)
::BIN   SCALAR  STRING BIN(BIGINT arg0)
::BITAND        SCALAR  BIGINT BITAND(BIGINT arg0, BIGINT arg1)
::BITNOT        SCALAR  BIGINT BITNOT(BIGINT arg0)
::BITOR SCALAR  BIGINT BITOR(BIGINT arg0, BIGINT arg1)
::BITWISE_AND_AGG       AGGREGATOR      BIGINT BITWISE_AND_AGG([DISTINCT] BIGINT arg1)
::BITWISE_OR_AGG        AGGREGATOR      BIGINT BITWISE_OR_AGG([DISTINCT] BIGINT arg1)
::BITXOR        SCALAR  BIGINT BITXOR(BIGINT arg0, BIGINT arg1)
::BROUND        SCALAR  DOUBLE BROUND(DOUBLE arg0, BIGINT arg1),DOUBLE BROUND(DOUBLE arg0)
......

Cada linha na saída segue o formato: function_name function_type signature(s). O tipo de função é um entre SCALAR, AGGREGATOR ou WINDOW.