Comprendre le but de la clause "having"
Dans cette étape, nous allons explorer le but fondamental de la clause "having" dans Hive et la manière dont elle est liée au filtrage et à l'agrégation des données.
La clause "having" dans Hive est utilisée en conjonction avec la clause "group by" pour filtrer des groupes de données sur la base d'une condition spécifiée. Elle vous permet d'appliquer un filtre après que les données ont été regroupées et agrégées, vous permettant ainsi de filtrer des groupes entiers qui ne répondent pas aux critères spécifiés.
Voici un exemple qui illustre l'utilisation de la clause "having":
Tout d'abord, assurez-vous d'être connecté en tant qu'utilisateur hadoop
en exécutant la commande suivante dans le terminal:
su - hadoop
Ensuite, lancez le shell Hive en exécutant la commande suivante:
hive
Maintenant, créez une table d'échantillonnage:
CREATE TABLE sales (
product STRING,
category STRING,
sales_amount FLOAT
);
Insérez quelques données d'échantillonnage:
INSERT INTO sales VALUES
('Product A', 'Electronique', 1000.0),
('Product B', 'Electronique', 2000.0),
('Product C', 'Vêtements', 500.0),
('Product D', 'Vêtements', 1500.0),
('Product E', 'Electronique', 3000.0);
Enfin, calculez les ventes totales par catégorie et filtrez les catégories dont les ventes totales sont supérieures à 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;
Dans cet exemple, nous créons tout d'abord une table appelée sales
avec des colonnes pour product
, category
et sales_amount
. Nous insérons ensuite quelques données d'échantillonnage dans la table.
Ensuite, nous utilisons la clause "group by" pour regrouper les données par category
, et la fonction SUM
pour calculer les ventes totales pour chaque catégorie. La clause "having" est ensuite utilisée pour filtrer les catégories où le total_sales
est inférieur ou égal à 3000.
La sortie de cette requête ne contiendra que la catégorie "Electronique" car ses ventes totales (2000,0 + 1000,0 + 3000,0 = 6000,0) dépassent 3000, tandis que la catégorie "Vêtements" sera exclue car ses ventes totales (500,0 + 1500,0 = 2000,0) ne répondent pas à la condition spécifiée dans la clause "having".