В этой главе описываются встроенные операторы Hive. В Hive есть четыре типа операторов:
- Операторы отношений
- Арифметические Операторы
- Логические Операторы
- Комплексные операторы
Операторы отношений
Эти операторы используются для сравнения двух операндов. В следующей таблице описаны реляционные операторы, доступные в Hive:
оператор | Операнд | Описание |
---|---|---|
A = B | все примитивные типы | TRUE, если выражение A эквивалентно выражению B, иначе FALSE. |
A! = B | все примитивные типы | TRUE, если выражение A не эквивалентно выражению B, иначе FALSE. |
A <B | все примитивные типы | TRUE, если выражение A меньше, чем выражение B, иначе FALSE. |
A <= B | все примитивные типы | TRUE, если выражение A меньше или равно выражению B, иначе FALSE. |
A> B | все примитивные типы | TRUE, если выражение A больше, чем выражение B, иначе FALSE. |
A> = B | все примитивные типы | TRUE, если выражение A больше или равно выражению B, иначе FALSE. |
ЕСТЬ НУЛЬ | все типы | TRUE, если выражение A оценивается как NULL, иначе FALSE. |
A НЕ НУЛЬ | все типы | FALSE, если выражение A оценивается как NULL, иначе TRUE. |
Как Б | Струны | TRUE, если строковый шаблон A соответствует B, иначе FALSE. |
A RLIKE B | Струны | NULL, если A или B — NULL, TRUE, если любая подстрока A соответствует регулярному выражению Java B, иначе FALSE. |
РЕГЭКСП Б | Струны | Так же, как RLIKE. |
пример
Предположим, что таблица сотрудника состоит из полей с именами Id, Name, Salary, Designation и Dept, как показано ниже. Создайте запрос для получения сведений о сотруднике, чей идентификатор равен 1205.
+-----+--------------+--------+---------------------------+------+ | Id | Name | Salary | Designation | Dept | +-----+--------------+------------------------------------+------+ |1201 | Gopal | 45000 | Technical manager | TP | |1202 | Manisha | 45000 | Proofreader | PR | |1203 | Masthanvali | 40000 | Technical writer | TP | |1204 | Krian | 40000 | Hr Admin | HR | |1205 | Kranthi | 30000 | Op Admin | Admin| +-----+--------------+--------+---------------------------+------+
Следующий запрос выполняется для получения сведений о сотруднике с использованием приведенной выше таблицы:
hive> SELECT * FROM employee WHERE Id=1205;
При успешном выполнении запроса вы увидите следующий ответ:
+-----+-----------+-----------+----------------------------------+ | ID | Name | Salary | Designation | Dept | +-----+---------------+-------+----------------------------------+ |1205 | Kranthi | 30000 | Op Admin | Admin | +-----+-----------+-----------+----------------------------------+
Следующий запрос выполняется для получения сведений о сотруднике, чья зарплата больше или равна 40000 рупий.
hive> SELECT * FROM employee WHERE Salary>=40000;
При успешном выполнении запроса вы увидите следующий ответ:
+-----+------------+--------+----------------------------+------+ | ID | Name | Salary | Designation | Dept | +-----+------------+--------+----------------------------+------+ |1201 | Gopal | 45000 | Technical manager | TP | |1202 | Manisha | 45000 | Proofreader | PR | |1203 | Masthanvali| 40000 | Technical writer | TP | |1204 | Krian | 40000 | Hr Admin | HR | +-----+------------+--------+----------------------------+------+
Арифметические Операторы
Эти операторы поддерживают различные общие арифметические операции над операндами. Все они возвращают типы чисел. В следующей таблице описаны арифметические операторы, доступные в Hive:
операторы | Операнд | Описание |
---|---|---|
А + Б | все типы номеров | Дает результат добавления A и B. |
A — B | все типы номеров | Дает результат вычитания B из A. |
A * B | все типы номеров | Дает результат умножения A и B. |
A / B | все типы номеров | Дает результат деления B на A. |
% B | все типы номеров | Дает напоминание в результате деления А на Б. |
A & B | все типы номеров | Дает результат побитового И А и Б. |
A | В | все типы номеров | Дает результат побитового ИЛИ A и B. |
A ^ B | все типы номеров | Дает результат побитового XOR для A и B. |
~ A | все типы номеров | Дает результат побитового НЕ А |
пример
Следующий запрос добавляет два числа, 20 и 30.
hive> SELECT 20+30 ADD FROM temp;
При успешном выполнении запроса вы увидите следующий ответ:
+--------+ | ADD | +--------+ | 50 | +--------+
Логические Операторы
Операторы являются логическими выражениями. Все они возвращают либо ИСТИНА, либо ЛОЖЬ.
операторы | Операнды | Описание |
---|---|---|
А И Б | логический | TRUE, если A и B TRUE, иначе FALSE. |
A && B | логический | То же, что А и Б. |
А ИЛИ Б | логический | TRUE, если либо A, либо B, либо оба имеют значение TRUE, иначе FALSE. |
A || В | логический | То же, что А И Б. |
НЕ А | логический | ИСТИНА, если А ЛОЖЬ, иначе ЛОЖЬ. |
! | логический | То же, что НЕ А. |
пример
Следующий запрос используется для получения сведений о сотрудниках, чей отдел TP и оклад более 40000 рупий.
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
При успешном выполнении запроса вы увидите следующий ответ:
+------+--------------+-------------+-------------------+--------+ | ID | Name | Salary | Designation | Dept | +------+--------------+-------------+-------------------+--------+ |1201 | Gopal | 45000 | Technical manager | TP | +------+--------------+-------------+-------------------+--------+
Комплексные операторы
Эти операторы предоставляют выражение для доступа к элементам сложных типов.