Introdução a UDFs de Scala

Você pode escrever o manipulador para uma função definida pelo usuário (UDF) em Scala. Um manipulador é executado como a lógica da função quando é chamado em SQL.

O Snowflake atualmente oferece suporte para a escrita de UDFs nas seguintes versões de Scala:

  • 2,12

Quando você tiver um manipulador, você criará a UDF com SQL. Para obter mais informações sobre como usar SQL para criar ou chamar uma UDF, consulte Criação de uma UDF ou Como chamar uma UDF.

Para uma introdução às UDFs, incluindo uma lista de linguagens na qual você pode escrever um manipulador de UDF, consulte Visão geral das funções definidas pelo usuário.

Nota

Para limitações relacionadas a manipuladores de Scala, consulte Limitações da UDF de Scala.

Você também pode usar o Scala para escrever uma UDF ao usar a API do Snowpark. Para obter mais informações, consulte Criação de funções definidas pelo usuário (UDFs) para DataFrames no Scala.

Como funciona um manipulador

Quando um usuário chama uma UDF, o usuário passa o nome e os argumentos da UDF para o Snowflake. O Snowflake chama o método do manipulador associado à UDF para executar a lógica da UDF. O método do manipulador então retorna a saída para o Snowflake, que a passa de volta para o cliente.

Para uma função escalar (que retorna um único valor), a UDF retorna um único valor para cada linha passada para a UDF.

Para oferecer suporte à lógica do seu manipulador, seu código pode fazer chamadas para bibliotecas externas ao manipulador. Por exemplo, se você já tiver um código de análise de dados em Scala, provavelmente poderá usá-lo em seu código de manipulador.

Para obter informações gerais sobre como escrever um manipulador em Scala, consulte Diretrizes de codificação do manipulador de UDF de Scala. Para obter mais informações sobre como escrever uma função escalar, consulte Como escrever uma UDF escalar em Scala.

Exemplo

O código no exemplo a seguir cria uma UDF chamada echo_varchar com um método do manipulador TestFunc.echoVarchar. O argumento Scala e os tipos de retorno são convertidos de e para SQL pelo Snowflake de acordo com os mapeamentos descritos em Mapeamentos de tipos de dados SQL-Scala.

CREATE OR REPLACE FUNCTION echo_varchar(x VARCHAR)
RETURNS VARCHAR
LANGUAGE SCALA
RUNTIME_VERSION = 2.12
HANDLER='TestFunc.echoVarchar'
AS
$$
class TestFunc {
  def echoVarchar(x : String): String = {
    return x
  }
}
$$;
Copy

Chamada da UDF

SELECT echo_varchar('Hello');
Copy

Considerações sobre o projeto

Tenha em mente o seguinte ao projetar um manipulador útil.

Codificação do manipulador

De exemplos básicos a detalhados, os seguintes tópicos descrevem como escrever um manipulador de UDF em Scala.