Guía de dominio dimensional de Hadoop

HadoopHadoopBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En un reino donde los límites entre las dimensiones se desvanecen, una brecha en la estructura de la realidad se ha abierto, permitiendo que un ser sobrenatural pase a través. Esta entidad, conocida como el Anunciador Cristalino, es un ser sensible compuesto por energía pura, cuya forma cambia y reluce como un kaleidoscopio de luz.

El objetivo del Anunciador Cristalino es aprovechar el poder de los datos para重塑 la misma estructura de la existencia. Para lograr esto, busca dominar las complejidades de Hadoop, un poderoso marco de procesamiento de grandes cantidades de datos. Sin embargo, la comprensión del Anunciador sobre Hadoop es incompleta, y requiere de una guía para desbloquear todo el potencial de la cláusula "having" en Hive, un componente de almacenamiento de datos de Hadoop.

Tu misión, si decides aceptarla, es guiar al Anunciador Cristalino a través de una serie de pasos, revelando los secretos de la cláusula "having" y permitiéndole aprovechar el poder de los datos de maneras nunca antes imaginadas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/where("where Usage") hadoop/HadoopHiveGroup -.-> hadoop/group_by("group by Usage") hadoop/HadoopHiveGroup -.-> hadoop/having("having Usage") hadoop/HadoopHiveGroup -.-> hadoop/aggregating("Aggregating Function") subgraph Lab Skills hadoop/where -.-> lab-288976{{"Guía de dominio dimensional de Hadoop"}} hadoop/group_by -.-> lab-288976{{"Guía de dominio dimensional de Hadoop"}} hadoop/having -.-> lab-288976{{"Guía de dominio dimensional de Hadoop"}} hadoop/aggregating -.-> lab-288976{{"Guía de dominio dimensional de Hadoop"}} end

Comprender el propósito de la cláusula "having"

En este paso, exploraremos el propósito fundamental de la cláusula "having" en Hive y cómo se relaciona con el filtrado y la agregación de datos.

La cláusula "having" en Hive se utiliza en combinación con la cláusula "group by" para filtrar grupos de datos basados en una condición especificada. Te permite aplicar un filtro después de que los datos han sido agrupados y agregados, lo que te permite filtrar grupos enteros que no cumplen con los criterios especificados.

Aquí hay un ejemplo que demuestra el uso de la cláusula "having":

Primero, asegúrate de estar registrado como el usuario hadoop ejecutando el siguiente comando en la terminal:

su - hadoop

Luego, lanza la shell de Hive ejecutando el siguiente comando:

hive

Ahora, crea una tabla de ejemplo:

CREATE TABLE sales (
  product STRING,
  category STRING,
  sales_amount FLOAT
);

Inserta algunos datos de ejemplo:

INSERT INTO sales VALUES
  ('Product A', 'Electrónica', 1000.0),
  ('Product B', 'Electrónica', 2000.0),
  ('Product C', 'Ropa', 500.0),
  ('Product D', 'Ropa', 1500.0),
  ('Product E', 'Electrónica', 3000.0);

Finalmente, calcula las ventas totales por categoría y filtra las categorías con ventas totales mayores a 3000:

CREATE TABLE result_1
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category
HAVING SUM(sales_amount) > 3000;

SELECT * FROM result_1;

En este ejemplo, primero creamos una tabla llamada sales con columnas para product, category y sales_amount. Luego insertamos algunos datos de ejemplo en la tabla.

A continuación, usamos la cláusula "group by" para agrupar los datos por category, y la función SUM para calcular las ventas totales para cada categoría. La cláusula "having" se utiliza luego para filtrar las categorías donde el total_sales es menor o igual a 3000.

La salida de esta consulta solo incluirá la categoría "Electrónica" ya que sus ventas totales (2000.0 + 1000.0 + 3000.0 = 6000.0) exceden de 3000, mientras que la categoría "Ropa" se excluirá porque sus ventas totales (500.0 + 1500.0 = 2000.0) no cumplen con la condición especificada en la cláusula "having".

Filtrar grupos basados en múltiples condiciones

Mientras que el paso anterior demostró el uso básico de la cláusula "having", Hive también te permite filtrar grupos basados en múltiples condiciones utilizando operadores lógicos como AND y OR.

Aquí hay un ejemplo que demuestra cómo usar múltiples condiciones en la cláusula "having":

Calcula las ventas totales por producto y categoría, y filtra los productos con ventas totales mayores a 2000 y que pertenecen a la categoría 'Electrónica':

CREATE TABLE result_2
AS
SELECT product, category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product, category
HAVING SUM(sales_amount) > 2000 AND category = 'Electrónica';

SELECT * FROM result_2;

En este ejemplo, agrupamos los datos por product y category, y calculamos las ventas totales para cada combinación de product y category. La cláusula "having" se utiliza luego para filtrar los grupos donde el total_sales es menor o igual a 2000, y la category no es "Electrónica".

La salida de esta consulta solo incluirá los productos pertenecientes a la categoría "Electrónica" con ventas totales mayores a 2000, como "Product B" y "Product E".

También puedes usar el operador OR para combinar múltiples condiciones en la cláusula "having":

Calcula las ventas totales por producto y categoría, y filtra los productos con ventas totales mayores a 2000 o que pertenecen a la categoría 'Ropa':

SELECT product, category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product, category
HAVING SUM(sales_amount) > 2000 OR category = 'Ropa';

Esta consulta incluirá todos los productos con ventas totales mayores a 2000, independientemente de su categoría, así como todos los productos pertenecientes a la categoría "Ropa", independientemente de sus ventas totales.

Usar funciones de agregación en la cláusula "having"

La cláusula "having" también se puede utilizar en combinación con funciones de agregación como COUNT, MAX, MIN y AVG. Esto te permite filtrar grupos basados en condiciones que involucren estas funciones de agregación.

Aquí hay un ejemplo que demuestra el uso de la función COUNT en la cláusula "having":

Calcula el número de productos en cada categoría, y filtra las categorías con más de 2 productos:

CREATE TABLE result_3
AS
SELECT category, COUNT(product) AS product_count
FROM sales
GROUP BY category
HAVING COUNT(product) > 2;

SELECT * FROM result_3;

En este ejemplo, usamos la función COUNT para contar el número de productos en cada category. La cláusula "having" se utiliza luego para filtrar las categorías donde el product_count es menor o igual a 2.

La salida de esta consulta solo incluirá las categorías que tienen más de 2 productos asociados.

También puedes combinar funciones de agregación con otras condiciones en la cláusula "having":

Calcula la cantidad máxima de ventas para cada categoría, y filtra las categorías con ventas máximas mayores a 2000 y más de 2 productos:

SELECT category, MAX(sales_amount) AS max_sales, COUNT(product) AS product_count
FROM sales
GROUP BY category
HAVING MAX(sales_amount) > 2000 AND COUNT(product) > 2;

Esta consulta calcula la cantidad máxima de ventas (max_sales) y el número de productos (product_count) para cada categoría. La cláusula "having" filtra las categorías donde el max_sales es menor o igual a 2000, o el product_count es menor o igual a 2.

Combinar las cláusulas "where" y "having"

Las cláusulas "where" y "having" tienen diferentes propósitos en las consultas de Hive. La cláusula "where" se utiliza para filtrar filas individuales antes de que los datos se agrupen y agreguen, mientras que la cláusula "having" se utiliza para filtrar grupos de datos después de que los datos hayan sido agrupados y agregados.

En algunos casos, es posible que necesites combinar ambas cláusulas en una sola consulta para obtener el comportamiento de filtrado deseado. Aquí hay un ejemplo que demuestra cómo combinar las cláusulas "where" y "having":

Calcula las ventas totales por categoría, filtra los productos con cantidad de ventas mayor a 1000 y filtra las categorías con ventas totales mayores a 3000:

CREATE TABLE result_4
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
WHERE sales_amount > 1000
GROUP BY category
HAVING SUM(sales_amount) > 3000;

SELECT * FROM result_4;

En este ejemplo, primero usamos la cláusula "where" para filtrar filas individuales donde la sales_amount es menor o igual a 1000. Esto significa que solo los productos con cantidad de ventas mayor a 1000 se considerarán para la agrupación y agregación subsiguientes.

Luego, agrupamos los datos filtrados por category y calculamos las ventas totales para cada categoría usando la función SUM. Finalmente, la cláusula "having" se utiliza para filtrar las categorías donde el total_sales es menor o igual a 3000.

La salida de esta consulta solo incluirá las categorías con ventas totales mayores a 3000, calculadas a partir de productos con cantidad de ventas mayor a 1000.

Resumen

En este laboratorio, emprendimos un viaje para guiar al Anunciador Cristalino a través de las complejidades de la cláusula "having" en Hive. Al dominar esta poderosa característica, el Anunciador ahora puede filtrar y analizar datos con una precisión sin precedentes, desbloqueando los secretos de los vastos tesoros de datos del multiverso.

A través de una serie de pasos, exploramos el propósito fundamental de la cláusula "having", demostrando su capacidad para filtrar grupos de datos basados en condiciones especificadas. Luego profundizamos más, aprendiendo cómo aplicar múltiples condiciones utilizando operadores lógicos, aprovechar funciones de agregación dentro de la cláusula "having" y combinar las cláusulas "where" y "having" para escenarios de filtrado de datos complejos.

A lo largo de este laboratorio, el Anunciador Cristalino ha adquirido conocimientos y habilidades invaluable, lo que le permite aprovechar el verdadero potencial de Hadoop y remodelar la estructura de la existencia a través del poder del análisis de datos. Con cada paso, hemos desbloqueado nuevas posibilidades, lo que permite al Anunciador navegar por los vastos dominios de datos con una precisión y control sin precedentes.