Filtrer une table Hive par valeur de colonne
Le cas d'utilisation le plus courant pour filtrer des tables Hive consiste à sélectionner des lignes en fonction des valeurs d'une ou plusieurs colonnes. Cela peut être réalisé en utilisant la clause WHERE
dans une requête SQL Hive.
Filtrage de base
La syntaxe de base pour filtrer une table Hive par une valeur de colonne est la suivante :
SELECT column1, column2,...
FROM table_name
WHERE column_name = 'value';
Voici un exemple :
SELECT *
FROM employees
WHERE department = 'Sales';
Cette requête retournera toutes les lignes de la table employees
où la colonne department
a pour valeur 'Sales'
.
Filtrage composé
Vous pouvez également combiner plusieurs conditions en utilisant des opérateurs logiques tels que AND
, OR
et NOT
dans la clause WHERE
:
SELECT column1, column2,...
FROM table_name
WHERE condition1 AND condition2;
SELECT column1, column2,...
FROM table_name
WHERE condition1 OR condition2;
SELECT column1, column2,...
FROM table_name
WHERE NOT condition;
Exemple :
SELECT *
FROM employees
WHERE department = 'Sales' AND salary > 50000;
Cette requête retournera toutes les lignes de la table employees
où le department
est 'Sales'
et le salary
est supérieur à 50000
.
Filtrage avec des valeurs NULL
La gestion des valeurs NULL
dans la clause WHERE
nécessite une attention particulière. Pour vérifier les valeurs NULL
, vous pouvez utiliser la syntaxe IS NULL
ou IS NOT NULL
:
SELECT column1, column2,...
FROM table_name
WHERE column_name IS NULL;
SELECT column1, column2,...
FROM table_name
WHERE column_name IS NOT NULL;
Exemple :
SELECT *
FROM employees
WHERE commission IS NOT NULL;
Cette requête retournera toutes les lignes de la table employees
où la colonne commission
n'est pas NULL
.
Filtrage avec des conditions de plage
Vous pouvez également filtrer les données en fonction d'une plage de valeurs en utilisant la clause BETWEEN
:
SELECT column1, column2,...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
Exemple :
SELECT *
FROM employees
WHERE salary BETWEEN 50000 AND 100000;
Cette requête retournera toutes les lignes de la table employees
où le salary
est compris entre 50000
et 100000
.