Regras de chamada de função no SQL padrão

A menos que seja indicado de outra forma na descrição da função, as regras a seguir aplicam-se a todas as funções:

  • Nas funções que aceitam tipos numéricos, se um operando for um ponto flutuante e o outro for um outro tipo numérico, ambos serão convertidos para FLOAT64 antes que a função seja avaliada.
  • Se um operando for NULL, o resultado será , com exceção do operador IS.
  • Nas funções que fazem diferenciação de fuso horário (conforme indicado na descrição da função), se um fuso horário não for especificado, o padrão UTC será usado.

Prefixo SAFE.

Sintaxe:

SAFE.function_name()

Descrição

Se você iniciar uma função com o prefixo SAFE., ela retornará NULL em vez de um erro. O prefixo SAFE. apenas evita erros da função prefixada: ele não evita erros que ocorrem durante a avaliação de expressões de argumentos. O prefixo SAFE. apenas evita erros que ocorrem devido ao valor das entradas da função, como erros de "valor fora do intervalo"; outros erros, como erros internos ou do sistema, ainda podem ocorrer. Se a função não retornar um erro, SAFE. não terá efeito na saída. Se a função nunca retornar um erro, como RAND, SAFE. não tem efeito.

Operadores, como + e =, não são compatíveis com o prefixo SAFE.. Para evitar erros de uma operação de divisão, use SAFE_DIVIDE. Alguns operadores, como IN, ARRAY e UNNEST, são parecidos com funções, mas não são compatíveis com o prefixo SAFE.. As funções CAST e EXTRACT também não são compatíveis com o prefixo SAFE.. Para evitar erros na transmissão, use SAFE_CAST.

Exemplo

No seguinte exemplo, o primeiro uso da função SUBSTR normalmente retorna um erro, porque a função não é compatível com argumentos de comprimento com valores negativos. No entanto, o prefixo SAFE. faz com que a função retorne NULL. O segundo uso da função SUBSTR fornece a saída esperada: o prefixo SAFE. não tem efeito.

SELECT SAFE.SUBSTR('foo', 0, -2) AS safe_output UNION ALL
SELECT SAFE.SUBSTR('bar', 0, 2) AS safe_output;

+-------------+
| safe_output |
+-------------+
| NULL        |
| ba          |
+-------------+

Funções compatíveis

O BigQuery suporta o uso do prefixo SAFE. com a maioria das funções escalares que podem gerar erros, incluindo funções STRING, funções matemáticas, funções DATE, funções DATETIME e funções TIMESTAMP. O BigQuery não suporta o uso do prefixo SAFE. com funções agregadas, analíticas ou definidas pelo usuário.

Como chamar funções definidas pelo usuário (UDFs) persistentes

Depois de criar uma UDF persistente, é possível chamá-la como qualquer outra função, prefixada com o nome do conjunto de dados em que foi definida como prefixo.

Sintaxe

[`project_name`].dataset_name.function_name([parameter_value[, ...]])

Para chamar uma UDF em um projeto diferente do projeto que você está usando para executar a consulta, project_name é obrigatório.

Exemplos

O seguinte exemplo cria uma UDF chamada multiply_by_three e a chama do mesmo projeto.

CREATE FUNCTION my_dataset.multiply_by_three(x INT64) AS (x * 3);

SELECT my_dataset.multiply_by_three(5) AS result; -- returns 15

O exemplo a seguir chama uma UDF persistente de outro projeto.


CREATE `other_project`.other_dataset.other_function(x INT64, y INT64)
  AS (x * y * 2);

SELECT `other_project`.other_dataset.other_function(3, 4); --returns 24
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.