Crie uma função definida pelo usuário (UDF) para estender o MaxCompute com lógica personalizada quando as funções integradas não atenderem aos seus requisitos. O DataWorks oferece uma interface visual para criar e registrar UDFs.
Contexto
Uma UDF amplia a biblioteca de funções integradas com lógica e cálculos personalizados para consultas. Para obter mais informações, consulte Visão geral de UDF. Você também pode criar UDFs usando o MaxCompute Studio ou a linha de comando. Para mais detalhes, consulte Criar uma UDF no MaxCompute Studio e Criar uma UDF no MaxCompute usando comandos.
Pré-requisitos
Antes de criar uma função, crie e carregue um recurso do MaxCompute no DataWorks. Para obter mais informações, consulte Criar um recurso do MaxCompute.
Para preparar seu arquivo de recurso, consulte Desenvolver uma UDF (Java) ou Desenvolver uma UDF (Python 3).
Limitações
O DataWorks permite visualizar e gerenciar apenas UDFs carregadas por meio de sua interface visual. Se você adicionou uma UDF ao MaxCompute usando outra ferramenta, como o MaxCompute Studio, carregue-a manualmente no DataWorks usando o recurso MaxCompute Functions. Para obter mais informações, consulte Gerenciar funções do MaxCompute.
Registrar uma função
-
Faça login no console do DataWorks. Na região de destino, clique em no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Development.
Crie um workflow. Para obter mais informações, consulte Criar um workflow recorrente.
-
Crie uma função.
Abra o workflow, clique com o botão direito em MaxCompute e selecione Create Function.
Na caixa de diálogo Create Function, insira um Name e selecione um Path.
Clique em Create.
-
Na caixa de diálogo Register Function, configure os parâmetros.
Parâmetro
Descrição
Function Type
Selecione o tipo da função. Valores válidos: Mathematical Operation Functions, Aggregate Functions, String Processing Functions, Date Functions, Window Functions e Other Functions. Para obter mais informações, consulte Usar funções integradas.
MaxCompute Engine Instance
Somente leitura.
Function Name
Nome da UDF, usado para referenciar a função em instruções SQL. O nome deve ser globalmente único e não pode ser modificado após o registro.
Owner
Por padrão, o sistema exibe a conta conectada no momento. Se necessário, selecione uma conta diferente.
Class Name
Nome da classe da UDF, no formato
resource_name.class_name. O nome do recurso pode ser um nome de pacote Java ou um nome de recurso Python.Ao criar uma UDF no DataWorks, você pode usar recursos do MaxCompute do tipo JAR ou Python. A configuração do nome da classe varia conforme o tipo de recurso:
-
Se o tipo de recurso for JAR, o Class Name segue o formato
package_name.actual_class_name. Obtenha esse valor no IntelliJ IDEA usando o comandocopy reference.Por exemplo, se o nome do pacote Java for
com.aliyun.odps.examples.udfe o nome real da classe forUDAFExample, defina o parâmetro Class Name comocom.aliyun.odps.examples.udf.UDAFExample. -
Se o tipo de recurso for Python, o Class Name segue o formato
python_resource_name.actual_class_name.Por exemplo, se o nome do recurso Python for
LcLognormDist_she o nome real da classe forLcLognormDist_sh, defina o parâmetro Class Name comoLcLognormDist_sh.LcLognormDist_sh.Nota-
Não adicione o sufixo .jar ou .py ao nome do recurso.
-
Envie e publique o recurso antes de usá-lo. Para obter mais informações, consulte Criar e usar recursos do MaxCompute.
-
Resources
Selecione os recursos necessários para registrar a função.
-
Modo visual: selecione apenas recursos já carregados ou adicionados ao DataWorks.
-
Editor de código: selecione qualquer recurso do mecanismo de computação MaxCompute correspondente.
Nota-
Não é necessário informar os caminhos dos recursos adicionados.
-
Se a UDF usar vários recursos, separe os nomes por vírgula (,).
Description
Breve descrição da finalidade da UDF.
Expression Syntax
Exemplo de uso da UDF. Por exemplo,
test.Parameter Description
Descrição dos tipos de parâmetros de entrada compatíveis e do tipo de valor de retorno.
Return Value
Exemplo de valor de retorno, como 1. Este parâmetro é opcional.
Example
Exemplo de uso da função. Este parâmetro é opcional.
-
Clique no ícone Salvar
na barra de ferramentas para salvar a função.-
Envie a função.
Clique no ícone Enviar
na barra de ferramentas.Na caixa de diálogo Submission, insira uma Change Description.
Clique em OK.
Para obter mais informações sobre como visualizar funções no MaxCompute e seu histórico de alterações, consulte Gerenciar funções do MaxCompute.
Visualizar e reverter versões de funções
Clique com o botão direito no nome da função e selecione View Earlier Versions para consultar o histórico de versões ou revertê-la.
O painel de histórico de versões exibe o horário de envio, a descrição da alteração e o responsável por cada versão. Para restaurar uma versão anterior, selecione-a e clique em
Roll Back
.
Usar uma função em um nó
Referencie uma UDF diretamente pelo nome nas instruções SQL. Para inserir rapidamente o nome da função no editor do nó atual, clique com o botão direito em Insert Function. Na árvore de arquivos do projeto à esquerda, sob o nó Function, clique com o botão direito na função desejada, como getregion, e selecione Reference Function para inseri-la no editor SQL. Por exemplo, use getregion(ip) AS region em uma instrução SELECT para chamar a UDF.
Apêndice 1: Visualizar funções definidas pelo usuário
Execute o comando
SHOW FUNCTIONSpara listar todas as UDFs registradas no projeto MaxCompute vinculado ao componente DataStudio do seu workspace DataWorks.O MaxCompute oferece diversas funções integradas. Para obter mais informações, consulte Visão geral das funções integradas.
// View the functions in the current project.
SHOW FUNCTIONS;
Apêndice 2: Visualizar detalhes da função
-
Execute o comando
DESCRIBEouDESCseguido do nome da função para visualizar os detalhes de uma UDF.// Use the short form to view the details of a UDF. DESC FUNCTION <function_name>; Se as funções integradas de um workflow não atenderem às suas necessidades, crie uma UDF do MaxCompute e carregue os recursos associados, como arquivos JAR ou Python. Para obter mais informações, consulte Gerenciar recursos do MaxCompute.
Melhores práticas
Após criar uma UDF, consulte Conceder acesso a uma UDF específica para um usuário especificado para configurar o controle de acesso da função.
Documentos relacionados
O MaxCompute permite empacotar arquivos JAR com um clique, carregar recursos JAR e registrar UDFs do MaxCompute. Para obter mais informações, consulte Empacotar, carregar e registrar.
Para informações sobre problemas que podem ocorrer ao escrever UDFs do MaxCompute em Java, consulte Perguntas frequentes sobre UDFs do MaxCompute escritas em Java.
Para informações sobre problemas que podem ocorrer ao escrever UDFs do MaxCompute em Python, consulte Perguntas frequentes sobre UDFs do MaxCompute escritas em Python.
Perguntas frequentes
P: Após carregar um recurso e defini-lo como UDF no DataWorks, posso usá-lo em consultas SQL no DataAnalysis, além dos nós ODPS SQL no DataStudio?
R: Sim. As UDFs registradas no DataWorks são armazenadas no projeto MaxCompute subjacente, tornando-as disponíveis tanto para nós ODPS SQL quanto para consultas SQL no DataAnalysis.