Reglas de llamada de funciones en SQL estándar

Las siguientes reglas se aplican a todas las funciones, a menos que se indique lo contrario de forma explícita en la descripción de la función:

  • Para las funciones que aceptan tipos numéricos, si un operando es uno de punto flotante y el otro es otro tipo numérico, ambos operandos se convierten en FLOAT64 antes de evaluar la función.
  • Si un operando es NULL, el resultado es , con la excepción del operador IS.
  • Para las funciones que son sensibles a la zona horaria (como se indica en la descripción de la función), la zona horaria predeterminada, UTC, se usa si no se especifica una zona horaria.

Prefijo SAFE.

Sintaxis:

SAFE.function_name()

Descripción

Si comienzas una función con el prefijo SAFE., se mostrará NULL en lugar de un error. El prefijo SAFE. solo previene errores de la función con el prefijo en sí: no evita los errores que se producen cuando se evalúan las expresiones de argumento. El prefijo SAFE. solo previene errores que se producen debido al valor de las entradas de función, como los errores “valor fuera de rango”; aún pueden ocurrir otros errores, como errores internos o del sistema. Si la función no muestra un error, SAFE. no tiene efecto en el resultado. Si la función nunca muestra un error, como RAND, entonces SAFE. no tiene ningún efecto.

Los operadores, como + y =, no admiten el prefijo SAFE.. Para evitar errores de una operación de división, usa SAFE_DIVIDE. Algunos operadores, como IN, ARRAY y UNNEST, se parecen a funciones, pero no admiten el prefijo SAFE.. Las funciones CAST y EXTRACT tampoco admiten el prefijo SAFE.. Para evitar la transmisión de errores, usa SAFE_CAST.

Ejemplo

En el siguiente ejemplo, el primer uso de la función SUBSTR normalmente mostraría un error, porque la función no admite argumentos de longitud con valores negativos. Sin embargo, el prefijo SAFE. hace que la función muestre NULL en su lugar. El segundo uso de la función SUBSTR proporciona el resultado esperado: el prefijo SAFE. no tiene ningún efecto.

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

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

Funciones compatibles

BigQuery admite el uso del prefijo SAFE. con la mayoría de las funciones escalares que pueden generar errores, incluidas las funciones STRING, las funciones matemáticas, las funciones DATE, las funciones DATETIME y las funciones TIMESTAMP. BigQuery no admite el uso del prefijo SAFE. con funciones agregadas, analíticas o funciones definidas por el usuario.

Llama a funciones definidas por el usuario (UDF) persistentes

Después de crear una UDF persistente, puedes llamarla como se haría con cualquier otra función, precedida por el nombre del conjunto de datos en el que se define como un prefijo.

Sintaxis

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

Si se llama a una UDF en un proyecto que no sea el que se usa para ejecutar la consulta, se necesita project_name.

Ejemplos

En el ejemplo siguiente, se crea una UDF denominada multiply_by_three y se la llama desde el mismo proyecto.

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

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

En el siguiente ejemplo, se llama a una UDF persistente desde un proyecto diferente.


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
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.