En esta ocasión veremos cómo crear una función y procedimiento almacenado para el cálculo del IMC (Índice de Masa Corporal), necesitaremos lo siguiente:
- La fórmula para el cálculo del IMC.
- Crear una función para calcularlo.
- Crear un procedimiento almacenado (stored procedure) para usar la función.
- Crear un bloque de código en BigQuery para invocar el procedimiento.
Tenemos la fórmula:
-- Obtener IMC IMC = p/(t*t) Donde: p= peso t= talla o estatura imc = el índice de masa corporal
Creando función para calcular el IMC:
CREATE OR REPLACE FUNCTION `myproject.dataset.imcCalculo`(peso NUMERIC, talla NUMERIC) RETURNS NUMERIC AS( (peso/(talla*talla)) );
Básicamente es una operación sencilla que solo incluye una multiplicación de la talla y la división del peso.
Creando procedimiento almacenado para invocar la función:
CREATE OR REPLACE PROCEDURE `myproject.dataset.getIMC`(peso NUMERIC, talla NUMERIC, OUT msg STRING) BEGIN DECLARE imc NUMERIC DEFAULT 0.0; set msg = 'Iniciamos calculo. '; SET imc = (SELECT `myproject.dataset.imcCalculo`(peso, talla)); set msg = concat(msg, 'El IMC es: ', imc, '. Resultado: '); set msg = concat(msg, ( CASE imc WHEN imc<=16.0 OR imc<=16.99 THEN 'Delgadez moderada.' WHEN imc<=17.0 OR imc<=18.49 THEN 'Delgadez aceptable.' WHEN imc<=18.50 OR imc<=24.99 THEN 'Peso normal.' WHEN imc<=25.0 OR imc<=29.99 THEN 'Sobrepeso.' WHEN imc<=30.0 OR imc<=34.99 THEN 'Obeso tipo I.' WHEN imc<=35.0 OR imc<=40.0 THEN 'Obeso tipo II.' ELSE 'No existe clasificacion' END) ); SELECT msg; END;
En el procedimiento almacenado incluimos un mensaje de salida (OUT msg STRING) el cual podrá ser consultado al finalizar el llamado. Este contendrá el cálculo del IMC y el diagnóstico final (peso normal, sobrepeso, etc.).
Creando bloque de BigQuery para invocar procedimiento almacenado:
-- Obtener IMC BEGIN DECLARE peso NUMERIC DEFAULT 56.0; DECLARE talla NUMERIC DEFAULT 1.65; DECLARE msg STRING DEFAULT 'Inicio'; CALL `myproject.dataset.getIMC`(peso, talla, msg); SELECT msg; END;
Usar un bloque nos ayuda a disminuir una cantidad "grosera" de sentencias.
El resultado de la operación nos dará como resultado: 20.5693. La salida será:
Iniciamos calculo. El IMC es: 20.569329. Resultado: Peso normal.
Crear funciones y procedimientos almacenados es algo muy útil y que nos ahorrará trabajo.
Enlaces:
https://cloud.google.com/bigquery/docs/reference/standard-sql/conditional_expressionshttps://codemonkeyjunior.blogspot.com/2024/08/gcp-cargar-y-exportar-datos-en-bigquery.html
https://lineadecodigo.com/java/calcular-el-indice-de-masa-corporal-con-java/
https://codemonkeyjunior.blogspot.com/2013/05/programando-en-ceylon-no1_13.html
No hay comentarios:
Publicar un comentario