ไฮฟ์ - ตัวดำเนินการในตัว
บทนี้จะอธิบายถึงตัวดำเนินการในตัวของ 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. |