domingo, 16 de junio de 2024

GCP: Funciones matemáticas , de cadena y tiempo en BigQuery

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

Vibe Coding (la programación vía IA): ¿el futuro de la programación?

Vibe Coding es un nuevo paradigma de programación, una nueva forma de crear código. Es un enfoque emergente en el desarrollo de sof...

Etiquetas

Archivo del blog