Hive: operatori incorporati
Questo capitolo spiega gli operatori incorporati di Hive. Esistono quattro tipi di operatori in Hive:
- Operatori relazionali
- Operatori aritmetici
- Operatori logici
- Operatori complessi
Operatori relazionali
Questi operatori vengono utilizzati per confrontare due operandi. La tabella seguente descrive gli operatori relazionali disponibili in Hive:
Operatore | Operando | Descrizione |
---|---|---|
A = B | tutti i tipi primitivi | VERO se l'espressione A è equivalente all'espressione B altrimenti FALSO. |
A! = B | tutti i tipi primitivi | TRUE se l'espressione A non è equivalente all'espressione B altrimenti FALSE. |
A <B | tutti i tipi primitivi | VERO se l'espressione A è minore dell'espressione B, altrimenti FALSO. |
A <= B | tutti i tipi primitivi | VERO se l'espressione A è minore o uguale all'espressione B altrimenti FALSO. |
A> B | tutti i tipi primitivi | VERO se l'espressione A è maggiore dell'espressione B, altrimenti FALSO. |
A> = B | tutti i tipi primitivi | TRUE se l'espressione A è maggiore o uguale all'espressione B altrimenti FALSE. |
A È NULLO | tutti i tipi | TRUE se l'espressione A restituisce NULL, altrimenti FALSE. |
A NON È NULLO | tutti i tipi | FALSE se l'espressione A restituisce NULL, altrimenti TRUE. |
A COME B | stringhe | TRUE se lo schema di stringa A corrisponde a B, altrimenti FALSE. |
A RLIKE B | stringhe | NULL se A o B è NULL, TRUE se una qualsiasi sottostringa di A corrisponde all'espressione regolare Java B, altrimenti FALSE. |
A REGEXP B | stringhe | Come RLIKE. |
Esempio
Supponiamo che il file employeetabella è composta da campi denominati Id, Nome, Salario, Designazione e Reparto come mostrato di seguito. Genera una query per recuperare i dettagli del dipendente il cui ID è 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|
+-----+--------------+--------+---------------------------+------+
La seguente query viene eseguita per recuperare i dettagli del dipendente utilizzando la tabella sopra:
hive> SELECT * FROM employee WHERE Id=1205;
In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:
+-----+-----------+-----------+----------------------------------+
| ID | Name | Salary | Designation | Dept |
+-----+---------------+-------+----------------------------------+
|1205 | Kranthi | 30000 | Op Admin | Admin |
+-----+-----------+-----------+----------------------------------+
La seguente query viene eseguita per recuperare i dettagli del dipendente il cui stipendio è maggiore o uguale a Rs 40000.
hive> SELECT * FROM employee WHERE Salary>=40000;
In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:
+-----+------------+--------+----------------------------+------+
| 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 |
+-----+------------+--------+----------------------------+------+
Operatori aritmetici
Questi operatori supportano varie operazioni aritmetiche comuni sugli operandi. Tutti restituiscono tipi di numeri. La tabella seguente descrive gli operatori aritmetici disponibili in Hive:
Operatori | Operando | Descrizione |
---|---|---|
A + B | tutti i tipi di numero | Fornisce il risultato dell'aggiunta di A e B. |
A - B | tutti i tipi di numero | Fornisce il risultato della sottrazione di B da A. |
A * B | tutti i tipi di numero | Fornisce il risultato della moltiplicazione di A e B. |
A / B | tutti i tipi di numero | Fornisce il risultato della divisione di B da A. |
A% B | tutti i tipi di numero | Fornisce il promemoria risultante dalla divisione di A per B. |
A & B | tutti i tipi di numero | Fornisce il risultato di AND bit per bit di A e B. |
A | B | tutti i tipi di numero | Fornisce il risultato dell'OR bit per bit di A e B. |
A ^ B | tutti i tipi di numero | Fornisce il risultato dello XOR bit per bit di A e B. |
~ A | tutti i tipi di numero | Fornisce il risultato di bit per bit NOT di A. |
Esempio
La seguente query aggiunge due numeri, 20 e 30.
hive> SELECT 20+30 ADD FROM temp;
In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:
+--------+
| ADD |
+--------+
| 50 |
+--------+
Operatori logici
Gli operatori sono espressioni logiche. Tutti restituiscono VERO o FALSO.
Operatori | Operandi | Descrizione |
---|---|---|
A AND B | booleano | TRUE se sia A che B sono TRUE, altrimenti FALSE. |
A && B | booleano | Come A AND B. |
A OR B | booleano | TRUE se A o B o entrambi sono TRUE, altrimenti FALSE. |
A || B | booleano | Uguale a A OR B. |
NON A | booleano | TRUE se A è FALSE, altrimenti FALSE. |
!UN | booleano | Uguale a NON A. |
Esempio
La seguente query viene utilizzata per recuperare i dettagli dei dipendenti il cui reparto è TP e lo stipendio è superiore a Rs 40000.
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
In caso di corretta esecuzione della query, viene visualizzata la seguente risposta:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
+------+--------------+-------------+-------------------+--------+
Operatori complessi
Questi operatori forniscono un'espressione per accedere agli elementi di tipi complessi.
Operatore | Operando | Descrizione |
---|---|---|
Un] | A è un array e n è un int | Restituisce l'ennesimo elemento dell'array A. Il primo elemento ha indice 0. |
M [tasto] | M è una mappa <K, V> e la chiave è di tipo K. | Restituisce il valore corrispondente alla chiave nella mappa. |
Sx | S è una struttura | Restituisce il campo x di S. |