ไฮฟ์ - ตัวดำเนินการในตัว
บทนี้จะอธิบายถึงตัวดำเนินการในตัวของ Hive มีตัวดำเนินการสี่ประเภทใน Hive:
- ตัวดำเนินการเชิงสัมพันธ์
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการทางตรรกะ
- ตัวดำเนินการที่ซับซ้อน
ตัวดำเนินการเชิงสัมพันธ์
ตัวดำเนินการเหล่านี้ใช้เพื่อเปรียบเทียบตัวถูกดำเนินการสองตัว ตารางต่อไปนี้อธิบายตัวดำเนินการเชิงสัมพันธ์ที่มีอยู่ใน Hive:
ตัวดำเนินการ | ตัวดำเนินการ | คำอธิบาย |
---|---|---|
ก = ข | ประเภทดั้งเดิมทั้งหมด | TRUE ถ้านิพจน์ A เทียบเท่ากับนิพจน์ B หรือ FALSE |
ก! = ข | ประเภทดั้งเดิมทั้งหมด | TRUE ถ้านิพจน์ A ไม่เทียบเท่ากับนิพจน์ B หรือ FALSE |
ก <B | ประเภทดั้งเดิมทั้งหมด | TRUE ถ้านิพจน์ A น้อยกว่านิพจน์ B หรือเป็น FALSE |
A <= B | ประเภทดั้งเดิมทั้งหมด | TRUE ถ้านิพจน์ A น้อยกว่าหรือเท่ากับนิพจน์ B หรือเป็น FALSE |
ก> ข | ประเภทดั้งเดิมทั้งหมด | TRUE ถ้านิพจน์ A มากกว่านิพจน์ B หรือ FALSE |
A> = B | ประเภทดั้งเดิมทั้งหมด | TRUE ถ้านิพจน์ A มากกว่าหรือเท่ากับนิพจน์ B หรือเป็น FALSE |
เป็นโมฆะ | ทุกประเภท | TRUE ถ้านิพจน์ A ประเมินค่าเป็น NULL หรือ FALSE |
ไม่เป็นโมฆะ | ทุกประเภท | FALSE ถ้านิพจน์ A ประเมินค่าเป็น NULL มิฉะนั้น TRUE |
เหมือน B | สตริง | TRUE ถ้ารูปแบบสตริง A ตรงกับ B มิฉะนั้น FALSE |
RLIKE B | สตริง | NULL ถ้า A หรือ B เป็น NULL TRUE หากสตริงย่อยของ A ตรงกับนิพจน์ทั่วไปของ Java B หรือเป็น FALSE |
REGEXP B | สตริง | เหมือนกับ RLIKE |
ตัวอย่าง
ให้เราถือว่า employeeตารางประกอบด้วยฟิลด์ที่ชื่อ Id, Name, Salary, Designation และ Dept ดังที่แสดงด้านล่าง สร้างแบบสอบถามเพื่อดึงรายละเอียดพนักงานที่มี 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|
+-----+--------------+--------+---------------------------+------+
แบบสอบถามต่อไปนี้ดำเนินการเพื่อดึงรายละเอียดพนักงานโดยใช้ตารางด้านบน:
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 |
ก / ข | ประเภทตัวเลขทั้งหมด | ให้ผลลัพธ์ของการหาร B จาก A |
ก% ข | ประเภทตัวเลขทั้งหมด | ให้การแจ้งเตือนที่เกิดจากการหาร A ด้วย B |
A & B | ประเภทตัวเลขทั้งหมด | ให้ผลลัพธ์ของบิต AND ของ A และ B |
A | ข | ประเภทตัวเลขทั้งหมด | ให้ผลลัพธ์เป็นบิตหรือหรือของ A และ B |
ก ^ ข | ประเภทตัวเลขทั้งหมด | ให้ผลลัพธ์ของ XOR ระดับบิตของ A และ B |
~ ก | ประเภทตัวเลขทั้งหมด | ให้ผลลัพธ์ของบิตไม่เป็น A |
ตัวอย่าง
ข้อความค้นหาต่อไปนี้จะเพิ่มตัวเลขสองตัวคือ 20 และ 30
hive> SELECT 20+30 ADD FROM temp;
เมื่อดำเนินการค้นหาสำเร็จคุณจะเห็นคำตอบต่อไปนี้:
+--------+
| ADD |
+--------+
| 50 |
+--------+
ตัวดำเนินการทางตรรกะ
ตัวดำเนินการคือนิพจน์ตรรกะ ทั้งหมดส่งคืน TRUE หรือ FALSE
ตัวดำเนินการ | โอเปร่า | คำอธิบาย |
---|---|---|
กและข | บูลีน | TRUE ถ้าทั้ง A และ B เป็นจริงมิฉะนั้น FALSE |
เอแอนด์แอนด์บี | บูลีน | เช่นเดียวกับ A AND B |
กหรือข | บูลีน | TRUE ถ้า A หรือ B หรือทั้งสองเป็น TRUE หรือ FALSE |
A || ข | บูลีน | เช่นเดียวกับ A หรือ B |
ไม่ใช่ | บูลีน | TRUE ถ้า A เป็น FALSE มิฉะนั้น FALSE |
! ก | บูลีน | เหมือนกับ NOT A. |
ตัวอย่าง
แบบสอบถามต่อไปนี้ใช้เพื่อดึงรายละเอียดพนักงานที่มีแผนก TP และเงินเดือนมากกว่า Rs 40000
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
เมื่อดำเนินการค้นหาสำเร็จคุณจะเห็นคำตอบต่อไปนี้:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
+------+--------------+-------------+-------------------+--------+
ตัวดำเนินการที่ซับซ้อน
ตัวดำเนินการเหล่านี้จัดเตรียมนิพจน์เพื่อเข้าถึงองค์ประกอบของประเภทที่ซับซ้อน
ตัวดำเนินการ | ตัวดำเนินการ | คำอธิบาย |
---|---|---|
ก [n] | A คือ Array และ n คือ int | มันส่งคืนองค์ประกอบที่ n ในอาร์เรย์ A องค์ประกอบแรกมีดัชนี 0 |
M [คีย์] | M คือแผนที่ <K, V> และคีย์มีประเภท K | จะส่งคืนค่าที่ตรงกับคีย์ในแผนที่ |
Sx | S เป็นโครงสร้าง | มันส่งคืนฟิลด์ x ของ S. |