Hive - встроенные операторы
В этой главе объясняются встроенные операторы Hive. В Hive есть четыре типа операторов:
- Операторы отношения
- Арифметические операторы
- Логические операторы
- Комплексные операторы
Операторы отношения
Эти операторы используются для сравнения двух операндов. В следующей таблице описаны операторы отношения, доступные в Hive:
Оператор | Операнд | Описание |
---|---|---|
А = В | все примитивные типы | ИСТИНА, если выражение A эквивалентно выражению B, иначе FALSE. |
А! = В | все примитивные типы | ИСТИНА, если выражение A не эквивалентно выражению B, иначе ЛОЖЬ. |
А <В | все примитивные типы | ИСТИНА, если выражение A меньше выражения B, иначе ЛОЖЬ. |
А <= В | все примитивные типы | ИСТИНА, если выражение А меньше или равно выражению Б, иначе ЛОЖЬ. |
А> В | все примитивные типы | ИСТИНА, если выражение A больше выражения B, иначе ЛОЖЬ. |
А> = В | все примитивные типы | ИСТИНА, если выражение А больше или равно выражению В, иначе ЛОЖЬ. |
НУЛЬ | все типы | ИСТИНА, если выражение A принимает значение NULL, иначе FALSE. |
А НЕ НУЛЬ | все типы | FALSE, если выражение A оценивается как NULL, иначе TRUE. |
А НРАВИТСЯ B | Струны | ИСТИНА, если строковый шаблон A соответствует B, иначе ЛОЖЬ. |
А РЯД Б | Струны | NULL, если A или B равно NULL, TRUE, если какая-либо подстрока A соответствует регулярному выражению Java B, в противном случае FALSE. |
А РЕГЭКСП Б | Струны | То же, что и RLIKE. |
пример
Предположим, что employeeТаблица состоит из полей с именами Id, Name, Salary, Design и 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. |
А - Б | все типы номеров | Дает результат вычитания B из A. |
А * Б | все типы номеров | Дает результат умножения A и B. |
А / Б | все типы номеров | Дает результат деления B на A. |
А% В | все типы номеров | Дает напоминание, полученное в результате деления A на B. |
А и Б | все типы номеров | Выдает результат поразрядного И для A и B. |
А | B | все типы номеров | Дает результат поразрядного ИЛИ A и B. |
А ^ В | все типы номеров | Выдает результат побитового XOR для A и B. |
~ А | все типы номеров | Выдает результат поразрядного НЕ из A. |
пример
В следующем запросе складываются два числа: 20 и 30.
hive> SELECT 20+30 ADD FROM temp;
При успешном выполнении запроса вы увидите следующий ответ:
+--------+
| ADD |
+--------+
| 50 |
+--------+
Логические операторы
Операторы представляют собой логические выражения. Все они возвращают ИСТИНА или ЛОЖЬ.
Операторы | Операнды | Описание |
---|---|---|
А И Б | логический | ИСТИНА, если и А, и В - ИСТИНА, иначе ЛОЖЬ. |
A && B | логический | То же, что A И B. |
А ИЛИ Б | логический | ИСТИНА, если А или В, или оба ИСТИНА, иначе ЛОЖЬ. |
А || B | логический | То же, что A OR B. |
НЕ А | логический | ИСТИНА, если А - ЛОЖЬ, иначе ЛОЖЬ. |
! А | логический | То же, что и НЕ А. |
пример
Следующий запрос используется для получения сведений о сотрудниках, чей отдел - TP, а зарплата превышает 40000 рупий.
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
При успешном выполнении запроса вы увидите следующий ответ:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
+------+--------------+-------------+-------------------+--------+
Комплексные операторы
Эти операторы предоставляют выражение для доступа к элементам сложных типов.
Оператор | Операнд | Описание |
---|---|---|
A [n] | A - это массив, а n - это int | Он возвращает n-й элемент в массиве A. Первый элемент имеет индекс 0. |
M [ключ] | M - это Map <K, V>, а ключ имеет тип K | Он возвращает значение, соответствующее ключу на карте. |
Sx | S - это структура | Он возвращает поле x S. |