(GCP) BigQuery posee un lenguaje propio similar al PL/SQL de Oracle. Con este lenguaje podemos realizar diversas operaciones con los datos de las tablas.
Desde simples consultas (SELECT), inserciones de datos (INSERT), actualizaciones (UPDATE) y hasta eliminar datos (DELETE). También operaciones de creación (CREATE) o truncado (TRUNCATE).
Además de contar con diversas funciones de cadena, tiempo, matemáticas, etc. que nos pueden servir para distintos fines.
SELECT "Hola, mundo en BigQuery!!"; -- Mismo mensaje usando la función FORMAT SELECT ('%s', "Hola, mundo en BigQuery!!");
¿Qué podemos hacer con este lenguaje de BigQuery?
Podemos validar si un campo es nulo:
-- Recordar que cada bloque tiene un inicio y un fin BEGIN -- Declaramos una variable de tipo INTEGER DECLARE resultado INT64; -- Seteamos el resultado de la consulta a la variable resultado SET resultado = (SELECT COUNT(campo) FROM `PROJECT.DATASET.Tabla`); -- Verificamos si el resultado es null IF resultado IS NULL THEN SELECT FORMAT('%s', 'El resultado es NULL'); END IF; END;
Podríamos recorrer el resultado de una consulta con un bucle FOR ... DO
BEGIN -- Declaramos las variables DECLARE fecha DATE; DECLARE resultado INT64; -- Seteamos fecha fecha = '2013-04-12'; -- Recorremos resultado de consulta, similar al CURSOR de PL/SQL de Oracle FOR rowI IN(SELECT campo FROM `PROJECT.DATASET.TablaContable` WHERE fch = fecha) DO -- Seteamos el valor rescuperado en la variable resultado SET resultado = rowI[0]; SELECT FORMAT('Recuperamos el valor: %d', resultado); -- Realizamos una actualización en otra tabla UPDATE `PROJECT.DATASET.TablaContableTemp` SET campo = resultado WHERE fch = fecha; END FOR; END;
Recordar que es necesario que cada bloque empiece con la palabra BEGIN y termine con la palabra END con punto y coma. Misma regla aplica cuando uno crear un Stored Procedure.
-- Stored Procedure para actualizar tabla: TABLACONTABLETEMP CREATE OR REPLACE PROCEDURE `PROJECT.DATASET.ActualizaTablaContableTemp`(fecha DATE) BEGIN -- Declaramos las variables DECLARE resultado INT64; -- Recorremos resultado de consulta, similar al CURSOR de PL/SQL de Oracle FOR row IN(SELECT campo FROM `PROJECT.DATASET.TablaContable` WHERE fch = fecha) DO -- Seteamosel valor rescuperado en la variable resultado SET resultado = row[0]; SELECT FORMAT('Recuperamos el valor: %d', resultado); -- Realizamos una actualización en otra tabla UPDATE `PROJECT.DATASET.TablaContableTemp` SET campo = resultado WHERE fch = fecha; END FOR; END;
Para invocarlo bastaría esta línea:
CALL`PROJECT.DATASET.ActualizaTablaContableTemp`('2013-04-12');
Más ejemplos en próximas entregas.
Enlaces:
https://codemonkeyjunior.blogspot.com/2024/06/gcp-funciones-matematicas-de-cadena-y.html
No hay comentarios:
Publicar un comentario