Hiveを叩くってエンジニアっぽくて素敵。

Hiveを使って数値を出すのはフロントのお仕事らしいのでお勉強します。
前のチームではサーバサイドエンジニア様のお仕事だったな〜・・・
でもなんだかエンジニアっぽいぞ!わくわく!

Hive導入

割愛。笑
というか、環境設定とかしてたら泥沼に陥ってしまいそう…
機会があったら今度やってみようかな。

HiveQL

純粋にHadoopを叩こうとすると複雑?で難しく、
HiveはHadoopをSQLライクに叩けるように糖衣してくれている子らしいです。

“SQLみたいに簡単にかけるよ!!”

・・・SQLわかんねー(;;;꒪⌓꒪)
ってことでSQLの書き方を調べる。

SQL

- SELECT

SELECT "フィールド名" FROM "テーブル名";

“テーブル” から、”フィールド” を選択し、取得する。

sales_table
fruit_type number_of_fruit fruit_sales
apple 1 100
orange 3 450
apple 5 500
grape 2 1000
SELECT fruit_type FROM sales_table;
*fruit_type
apple
orange
apple
grape


- Distinct

重複した行をまとめる。

SELECT DISTINCT fruit_type FROM sales_table;
*fruit_type
apple
orange
grape


- WHERE

条件を絞って取得。

SELECT "フィールド名"
FROM "テーブル名"
WHERE "条件";

例)売り上げが500円以上のフィールドを取得。

SELECT fruit_type
FROM sales_table
WHERE fruit_sales >= 500;
*fruit_type
apple
grape


- AND/OR

2つ以上の条件を組み合わせて使う。

SELECT "フィールド名"
FROM "テーブル名"
WHERE "簡単条件"
{[AND|OR] "簡単条件"}+;

例)売り上げが300円以上800円未満のフィールドを取得。

SELECT fruit_type
FROM sales_table
WHERE fruit_sales >= 300
AND fruit_sales < 800;
*fruit_type
orange
apple


- IN

複数の条件を省略したやつ。ORで置き換えられる。

SELECT fruit_type
FROM sales_table
WHERE fruit_sales IN (100, 450);
*fruit_type
apple
orange


- BETWEEN

INは不連続の値だが、BETWEENはある程度の範囲 (range) 内で見てくれる。

SELECT fruit_type
FROM sales_table
WHERE fruit_sales BETWEEN 100 AND 450;
*fruit_type
apple
orange


- LIKE

パターンで取得。

SELECT fruit_type
FROM sales_table
WHERE fruit_type LIKE '%ra%';
*fruit_type
orange
grape


- ORDER BY

選ばれたデータを昇順(ASC)もしくは降順(DESC)に表示。

SELECT "フィールド名"
FROM "テーブル名"
[WHERE "条件"]
ORDER BY "フィールド名" [ASC, DESC]; // デフォルト: ASC
SELECT fruit_type
FROM sales_table
ORDER BY fruit_sales DESC
*fruit_type
grape
apple
orange
apple


- 関数

  • AVG (平均値)
  • COUNT (カウント)
  • MAX (最大値)
  • MIN (最小値)
  • SUM (合計値)
SELECT "関数名"("フィールド名")
FROM "テーブル名";
SELECT SUM(fruit_sales)
FROM sales_table
*SUM(fruit_sales)
2050


- COUNT

テーブルの中に読み込まれたデータがどれくらいあるのか、カウントできる。

SELECT COUNT(fruit_type)
FROM sales_table
WHERE fruit_sales IS NOT NULL;
*COUNT(fruit_type)
4


**- **



ひとりごと

SELECTとかは大文字にした方がいいよって言われてそうしていたけど、社内のwikiを漁ってたら小文字で書いている人もいて、どっちやねん!って思ったので調べたら、
構文的には大文字小文字どちらでも大丈夫。だが、裏の処理は大文字でやるので変換が無くなる分速くなるから大文字説を唱えている人と、それに反論している人がいて・・・あーこれも宗教か、と思いました。

見やすいという理由で大文字でいきます。( •́ㅂ•̀)و

Please comment!