Hiveql-select-where
提供:Dev Guides
HiveQL-Select-Where
Hiveクエリ言語(HiveQL)は、Hiveがメタストア内の構造化データを処理および分析するためのクエリ言語です。 この章では、WHERE句を指定したSELECTステートメントの使用方法について説明します。
SELECTステートメントは、テーブルからデータを取得するために使用されます。 WHERE句は条件と同様に機能します。 条件を使用してデータをフィルタリングし、有限の結果を提供します。 組み込みの演算子と関数は、条件を満たす式を生成します。
構文
以下に、SELECTクエリの構文を示します。
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number];
例
SELECT…WHERE句の例を見てみましょう。 Id、Name、Salary、Designation、Deptという名前のフィールドを持つ、以下の従業員テーブルがあるとします。 Rs 30000を超える給与を稼ぐ従業員の詳細を取得するクエリを生成します。
+------+--------------+-------------+-------------------+--------+
| 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 salary>30000;
クエリが正常に実行されると、次の応答が表示されます。
+------+--------------+-------------+-------------------+--------+
| 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 |
+------+--------------+-------------+-------------------+--------+
JDBCプログラム
特定の例にwhere句を適用するJDBCプログラムは次のとおりです。
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveQLWhere {
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
//Register driver and create driver instance
Class.forName(driverName);
//get connection
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");
//create statement
Statement stmt = con.createStatement();
//execute statement
Resultset res = stmt.executeQuery("SELECT* FROM employee WHERE salary>30000;");
System.out.println("Result:");
System.out.println(" ID \t Name \t Salary \t Designation \t Dept ");
while (res.next()) {
System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5));
}
con.close();
}
}
HiveQLWhere.javaという名前のファイルにプログラムを保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。
$ javac HiveQLWhere.java
$ java HiveQLWhere
出力:
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