Фильтрация таблицы Hive по значению столбца
Наиболее распространенным сценарием использования фильтрации таблиц Hive является выбор строк на основе значений в одном или нескольких столбцах. Это можно сделать с помощью предложения WHERE
в запросе Hive SQL.
Базовая фильтрация
Базовый синтаксис для фильтрации таблицы Hive по значению столбца выглядит следующим образом:
SELECT column1, column2, ...
FROM table_name
WHERE column_name = 'value';
Вот пример:
SELECT *
FROM employees
WHERE department = 'Sales';
Этот запрос вернет все строки из таблицы employees
, в которых столбец department
имеет значение 'Sales'
.
Составная фильтрация
Вы также можете комбинировать несколько условий, используя логические операторы, такие как AND
, OR
и NOT
в предложении 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;
Пример:
SELECT *
FROM employees
WHERE department = 'Sales' AND salary > 50000;
Этот запрос вернет все строки из таблицы employees
, в которых department
равен 'Sales'
, а salary
больше 50000
.
Фильтрация с учетом значений NULL
При обработке значений NULL
в предложении WHERE
требуется особое внимание. Чтобы проверить наличие значений NULL
, можно использовать синтаксис IS NULL
или 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;
Пример:
SELECT *
FROM employees
WHERE commission IS NOT NULL;
Этот запрос вернет все строки из таблицы employees
, в которых столбец commission
не равен NULL
.
Фильтрация с использованием диапазонных условий
Вы также можете фильтровать данные на основе диапазона значений, используя предложение BETWEEN
:
SELECT column1, column2, ...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
Пример:
SELECT *
FROM employees
WHERE salary BETWEEN 50000 AND 100000;
Этот запрос вернет все строки из таблицы employees
, в которых salary
находится в диапазоне от 50000
до 100000
.