В этой главе описываются встроенные операторы 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 | +------+--------------+-------------+-------------------+--------+
Комплексные операторы
Эти операторы предоставляют выражение для доступа к элементам сложных типов.