En esta ocasión veremos cómo usar algunas de las funciones propias de BigQuery. Tanto en consultas, bloques, stored procedures y nuestras propias funciones.
Veremos:
- Funciones matemáticas: RAND, POW, COS, SIN, etc.
- Funciones de cadena: FORMAT, REPLACE, TRIM, CHAR_LENGTH, CONCAT, etc.
- Funciones de manejo del tiempo: CURRENT_TIME, TIME, EXTRACT, FORMAT_TIME, etc.
Para hacer uso de las funciones solo debemos hacer uso de SELECT seguido de la función que queremos emplear:
Funciones matemáticas:
-- Consultas matemáticas SELECT RAND(); -- generará un número aleatorio de tipo FLOAT64 SELECT POW(3,2); -- 3 elevado a la 2da potencia SELECT COS(3); -- Coseno de 3 SELECT SIN(-2); -- Seno de -2
Funciones de cadena:
-- Consultas de cadena SELECT TRIM(" Este es un ejemplo de la función trim "); -- quitará los espacios de la cadena SELECT CHAR_LENGTH("Ferrocarrilero");-- la longitud será de 14 caracteres SELECT LOWER("ANITA LAVA LA TINA"); -- anita lava la tina SELECT UPPER("una pequeña gacela"); -- UNA PEQUEÑA GACELA SELECT REPLACE("Maria", 'i','y'); -- Marya
Funciones de tiempo:
-- Consultas de tiempo SELECT CURRENT_TIME AS now; -- mostrará el tiempo actual SELECT TIME(15,30,00) as hora; -- mostrará la hora en formato hh:mm:ss
Empecemos con los bloques en BigQuery:
BEGIN -- Código BigQuery END;
Como se puede observar, es similar a como lo hacemos en PL/SQL de Oracle.
Ejemplo. Crear un bloque BigQuery que verifique el tamaño de una cadena y si es mayor a cero, que la muestre.
BEGIN -- Declaramos una variable llamada nombre de tipo String DECLARE nombre STRING; -- Asignamos un valor a la variable nombre SET nombre = "MARIA"; -- Obtenemos el tamaño de la cadena y verificamos que sea mayor a cero IF CHAR_LENGTH(nombre) > 0 THEN SELECT FORMAT('Hola %s',nombre); END IF; END;
Ejemplo. Crear un bloque BigQuery en el que se calcule la potecia de un número elevado a otro número. Para eso usaremos la función ``POW``.
BEGIN DECLARE x FLOAT64; DECLARE y FLOAT64; SET x = 54; SET y = 32; IF y < 0 THEN SELECT "REVISAR DATOS"; ELSE SELECT FORMAT('La potencia del no. %f elevado a %f nos da: %f', x,y, (SELECT POW(x,y))); END; END;
Podríamos crear tanto stored como funciones que implementen esas funciones propias de BigQuery.
Ejemplo. Crear un stored procedure BigQuery que genere un número aleatorio y tenga como entrada un número flotante. Si ambos números so iguales, mostrar un mensaje de logrado. En caso contrario, pedir que se intente nuevamente.
CREATE OR REPLACE PROCEDURE `project.dataset.adivinaNumero`(numero FLOAT64) BEGIN DECLARE aleatorio FLOAT64; -- Generamos número aleatorio SET aleatorio = (SELECT RAND()); -- Verificamos si son iguales IF numero = aleatorio THEN SELECT FORMAT('%f, bien hecho', aleatorio); ELSE SELECT FORMAT('%f, intenta de nuevo', numero); END IF; END;
Para invocar procedimeinto:
CALL `project.dataset.adivinaNumero`(0.53332);
En próximas entregas veremos más ejemplos.
Enlaces:
https://codemonkeyjunior.blogspot.com/2024/05/gcp-crear-stored-procedures-y-funciones.html
No hay comentarios:
Publicar un comentario