Aplicando instrucciones CASE para la lógica condicional
Ahora que tienes un conocimiento básico de las instrucciones CASE en Hive, profundicemos en cómo puedes aplicarlas para la lógica condicional en tus tareas de procesamiento de datos.
Instrucciones CASE simples
La forma más simple de una instrucción CASE en Hive implica una sola expresión que se evalúa contra un conjunto de condiciones. Aquí hay un ejemplo:
SELECT
customer_name,
CASE
WHEN age < 18 THEN 'Menor'
WHEN age >= 18 AND age < 65 THEN 'Adulto'
ELSE 'Adulto mayor'
END AS customer_category
FROM customer_table;
En este ejemplo, la instrucción CASE
evalúa la columna age
y asigna una categoría de cliente según el rango de edad.
Instrucciones CASE buscadas
Hive también admite una forma más avanzada de instrucciones CASE, conocida como instrucciones CASE "buscadas". Estas te permiten evaluar múltiples expresiones dentro de las cláusulas WHEN
, lo que proporciona mayor flexibilidad en tu lógica condicional. Aquí hay un ejemplo:
SELECT
product_name,
CASE
WHEN quantity < 10 THEN 'Stock bajo'
WHEN quantity >= 10 AND quantity < 50 THEN 'Stock medio'
WHEN quantity >= 50 AND quantity < 100 THEN 'Stock alto'
ELSE 'Stock muy alto'
END AS stock_level
FROM product_table;
En este ejemplo, la instrucción CASE
evalúa la columna quantity
y asigna un nivel de stock según el rango de cantidad.
Instrucciones CASE anidadas
También puedes anidar instrucciones CASE dentro de otras instrucciones CASE para crear una lógica condicional más compleja. Esto puede ser útil cuando necesitas aplicar múltiples capas de toma de decisiones. Aquí hay un ejemplo:
SELECT
order_id,
CASE
WHEN order_status = 'PENDIENTE' THEN
CASE
WHEN order_date < DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) THEN 'Vencido'
ELSE 'Pendiente'
END
WHEN order_status = 'ENVIADO' THEN 'Enviado'
WHEN order_status = 'ENTREGADO' THEN 'Entregado'
ELSE 'Cancelado'
END AS order_status_label
FROM orders_table;
En este ejemplo, la instrucción CASE
externa evalúa la columna order_status
, y la instrucción CASE
interna evalúa adicionalmente la order_date
para los pedidos pendientes.
Al dominar las técnicas cubiertas en esta sección, serás capaz de aprovechar las instrucciones CASE para implementar una lógica condicional compleja en tus consultas de Hive, lo que hará que tu procesamiento de datos sea más eficiente y efectivo.