Hive-組み込み演算子
この章では、Hiveの組み込み演算子について説明します。Hiveには4つのタイプの演算子があります。
- 関係演算子
- 算術演算子
- 論理演算子
- 複雑な演算子
関係演算子
これらの演算子は、2つのオペランドを比較するために使用されます。次の表に、Hiveで使用できる関係演算子を示します。
オペレーター | オペランド | 説明 |
---|---|---|
A = B | すべてのプリミティブ型 | 式Aが式Bと同等である場合はTRUE、それ以外の場合はFALSE。 |
A!= B | すべてのプリミティブ型 | 式Aが式Bと同等でない場合はTRUE、それ以外の場合はFALSE。 |
A <B | すべてのプリミティブ型 | 式Aが式Bよりも小さい場合はTRUE、それ以外の場合はFALSE。 |
A <= B | すべてのプリミティブ型 | 式Aが式B以下の場合はTRUE、それ以外の場合はFALSE。 |
A> B | すべてのプリミティブ型 | 式Aが式Bより大きい場合はTRUE、それ以外の場合はFALSE。 |
A> = B | すべてのプリミティブ型 | 式Aが式B以上の場合はTRUE、それ以外の場合はFALSE。 |
AはNULLです | いろんなタイプ | 式AがNULLと評価された場合はTRUE、それ以外の場合はFALSE。 |
AはNULLではありません | いろんなタイプ | 式AがNULLと評価された場合はFALSE、それ以外の場合はTRUE。 |
いいねB | 文字列 | 文字列パターンAがBと一致する場合はTRUE、それ以外の場合はFALSE。 |
A RLIKE B | 文字列 | AまたはBがNULLの場合はNULL、Aの部分文字列がJava正規表現Bと一致する場合はTRUE、それ以外の場合はFALSE。 |
正規表現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を加算した結果を示します。 |
A-B | すべての番号タイプ | AからBを引いた結果を示します。 |
A * B | すべての番号タイプ | AとBを掛けた結果を示します。 |
A / B | すべての番号タイプ | BをAから除算した結果を示します。 |
A%B | すべての番号タイプ | AをBで割った結果のリマインダーを表示します。 |
A&B | すべての番号タイプ | AとBのビットごとのANDの結果を示します。 |
A | B | すべての番号タイプ | AとBのビットごとのORの結果を示します。 |
A ^ B | すべての番号タイプ | AとBのビット単位のXORの結果を示します。 |
〜A | すべての番号タイプ | Aのビット単位のNOTの結果を返します。 |
例
次のクエリは、20と30の2つの数値を追加します。
hive> SELECT 20+30 ADD FROM temp;
クエリが正常に実行されると、次の応答が表示されます。
+--------+
| ADD |
+--------+
| 50 |
+--------+
論理演算子
演算子は論理式です。それらはすべてTRUEまたはFALSEを返します。
演算子 | オペランド | 説明 |
---|---|---|
AとB | ブール値 | AとBの両方がTRUEの場合はTRUE、それ以外の場合はFALSE。 |
A && B | ブール値 | A ANDBと同じです。 |
AまたはB | ブール値 | AまたはB、あるいはその両方がTRUEの場合はTRUE、それ以外の場合はFALSE。 |
A || B | ブール値 | AまたはBと同じです。 |
ない | ブール値 | AがFALSEの場合はTRUE、それ以外の場合はFALSE。 |
!A | ブール値 | NOTAと同じです。 |
例
次のクエリは、部門がTPで、給与がRs40000を超える従業員の詳細を取得するために使用されます。
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です。 | 配列Aのn番目の要素を返します。最初の要素のインデックスは0です。 |
M [キー] | MはMap <K、V>であり、キーのタイプはKです。 | マップ内のキーに対応する値を返します。 |
Sx | Sは構造体です | Sのxフィールドを返します。 |