UDFs de scripts Snowflake¶
O Snowflake oferece suporte a funções definidas pelo usuário SQL (UDFs) que contêm linguagem de procedimento Script Snowflake. Estas UDFs são chamadas de UDFs de scripts Snowflake.
UDFs de scripts Snowflake podem ser chamadas em uma Instrução SQL, como uma instrução SELECT ou uma instrução INSERT. Portanto, eles são mais flexíveis do que um procedimento armazenado do Script Snowflake, que só pode ser chamado em um comando SQL CALL.
Uso geral¶
Uma UDF de script Snowflake avalia o código de procedimento e retorna um valor escalar (ou seja, único).
Você pode usar o seguinte subconjunto de sintaxe do Script Snowflake nos scripts Snowflake UDFs:
Tipos de dados suportados¶
UDFs de scripts Snowflake oferecem suporte aos seguintes tipos de dados para argumentos de entrada e valores de retorno:
Tipos de dados numéricos (por exemplo, INTEGER, NUMBER e FLOAT)
Tipos de dados de cadeia de caracteres e binários (por exemplo, VARCHAR e BINARY)
Tipos de dados de data e hora (por exemplo, DATE, TIME e TIMESTAMP)
Tipos de dados lógicos (por exemplo, BOOLEAN)
UDFs de scripts Snowflake oferecem suporte aos seguintes tipos de dados apenas para argumentos de entrada:
Tipos de dados semiestruturados (por exemplo, VARIANT, OBJECT e ARRAY)
Tipos de dados estruturados (por exemplo, ARRAY, OBJECT e MAP)
Limitações¶
As seguintes limitações se aplicam a UDFs de scripts Snowflake:
Os seguintes tipos de sintaxe de scripts Snowflake não são compatíveis com UDFs de scripts Snowflake:
SQL Instruções não são compatíveis com scripts Snowflake UDFs (incluindo SELECT, INSERT, UPDATE e assim por diante).
UDFs de scripts Snowflake não podem ser definidas como funções de tabela.
Os seguintes tipos de expressão não são compatíveis com UDFs de scripts Snowflake:
Funções definidas pelo usuário
Funções de agregação
Funções de janela
UDFs de scripts Snowflake não pode ser usadas ao criar uma exibição materializada.
UDFs de scripts Snowflake não podem ser usadas ao criar políticas de acesso a linhas e políticas de mascaramento.
UDFs de scripts Snowflake não podem ser usadas para especificar um valor de coluna padrão.
UDFs de scripts Snowflake não podem ser usadas em um comando COPY INTO para carregamento e descarregamento de dados.
UDFs Comando não podem ser memoizáveis.
UDFs Comando têm um limite de 500 argumentos de entrada.
Você não pode registrar mensagens em log para UDFs de scripts Snowflake.
Exemplos¶
Os exemplos a seguir criam e chamam UDFs de scripts Snowflake:
Criação de uma UDF de scripts Snowflake com lógica condicional
Criação de uma UDF de scripts Snowflake com tratamento de exceções
Criação de uma UDF de scripts Snowflake que retorna um valor para uma instrução INSERT
Criação de uma UDF de scripts Snowflake chamada em cláusulas WHERE e ORDER BY
Criação de uma UDF de scripts Snowflake com variáveis¶
Criação de uma UDF de scripts Snowflake que calcula o lucro com base nos valores de dois argumentos:
Nota
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Chame calculate_profit em uma consulta:
Você pode usar a mesma UDF de scripts Snowflake e especificam colunas para os argumentos. Primeiro, crie uma tabela e insira os dados:
Chame calculate_profit em uma consulta e especifique as colunas para os argumentos:
Criação de uma UDF de scripts Snowflake com lógica condicional¶
Criação de uma UDF de scripts Snowflake que usa lógica condicional para determinar o nome do departamento com base em um valor INTEGER de entrada:
Nota
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Chame check_dept em uma consulta:
Você pode usar uma variável SQL em um argumento quando você chama uma UDF de scripts Snowflake. O exemplo a seguir define uma variável SQL e, em seguida, usa a variável em uma chamada para a check_dept UDF:
Criação de uma UDF de scripts Snowflake com um loop¶
Criação de uma UDF de scripts Snowflake que usa um loop para contar todos os números até um número de destino fornecido em um argumento e calcular a soma de todos os números contados:
Nota
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Chame count_to em uma consulta:
Criação de uma UDF de scripts Snowflake com tratamento de exceções¶
Criação de uma UDF de scripts Snowflake que declara uma exceção e depois gera a exceção:
Nota
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Chame raise_exception em uma consulta e especifique 1 para o valor de entrada:
Chame raise_exception em uma consulta e especifique 2 para o valor de entrada:
Chame raise_exception em uma consulta e especifique NULL para o valor de entrada:
Criação de uma UDF de scripts Snowflake que retorna um valor para uma instrução INSERT¶
Criação de uma UDF de scripts Snowflake que retorna um valor que é usado em uma instrução INSERT. Crie a tabela na qual os valores serão inseridos:
Crie uma UDF SQL que retorna um valor numérico:
Nota
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Chame value_to_insert em várias instruções INSERT:
Consulte a tabela para visualizar os valores inseridos:
Criação de uma UDF de scripts Snowflake chamada em cláusulas WHERE e ORDER BY¶
Criação de uma UDF de scripts Snowflake que retorna um valor que é usado em uma cláusula WHERE ou ORDER BY. Criar uma tabela e inserir valores:
Crie uma UDF SQL que retorna um valor numérico que é o produto da multiplicação de dois valores de entrada:
Nota
If you use Snowflake CLI, SnowSQL,
the Classic Console, or the execute_stream or execute_string method in
Python Connector code, this example requires minor
changes. For more information, see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector.
Chame get_product na cláusula WHERE de uma consulta para retornar as linhas onde o produto é maior que 350:
Chame get_product na cláusula ORDER BY de uma consulta para ordenar os resultados do produto mais baixo para o mais alto retornado pela UDF: