良いプログラマビッグデータ学習ルートハイブ内部関数

ビッグデータの希望で、我々はビッグデータ学習ルートを更新し続けてビッグデータは、ルートハイブ内部関数を学習良いプログラマは、小さなパートナーを支援するために学んでいます。
1、乱数機能を取る:RAND()
構文:ランド()、ランド(int型の種子) 戻り値:ダブル説明:範囲0から1に乱数を返します。あなたはシードを指定した場合、それは安定した乱数列を与える
; RAND()を選択し
、SELECT RAND(10)
スプリット(STR、splitor):2、分割文字列関数
構文:スプリット(文字列str、文字列パット ) 戻り値:説明array:分割による特許列strが、分割後の文字列の配列を返し、エスケープ区切り特別な注意
SELECTスプリット(「。 "5.0)[0];
スプリットを選択(RAND(10)100 ,." 「)[0];
3、列遮断機能:SUBSTR、サブストリング
構文:SUBSTR(列A、INTスタート )、ストリング(文字列A、INT開始) 戻り値:文字列説明:Aの最後に開始位置から文字列を返します文字列
構文:SUBSTR(ストリング、整数開始 、INT LEN)、ストリング(文字列、整数開始、INT LEN) 戻り値:文字列説明:開始位置から文字列を開始し、文字列の長さlen返す
選択をSUBSTR(RAND()
100,0,2)。
ストリングは、(RAND()を選択100,0,2)
。4、If関数を次の場合
構文:(ブールtestCondition、T valueTrue場合 、T valueFalseOrNull) 戻り値:T説明:TestCondition条件がTRUEで、ValueTRUEを返し、そうでない場合valueFalseOrNull
選択した場合(> 10 100は、 "これは真である"、 "これはfalseにIS")
を選択した場合(2 = 1、 "M"、 "F");
選択した場合(1 = 1、 "M"、(IF。 (1 = 2、 "女性"、 "わからない")));
選択した場合(図3 = 1、 "M"、(IF(3 = 2 、 " M"、 "わからない")));
5、但し関数を判定:CASE
最初フォーマット:
構文:次いで、ケースBは、[してc D]
[E ELSE] ENDの戻り値:T説明:TRUEである場合、Bのリターン; cがTRUEである場合、dが返されます; Eそうでなければ
第二のフォーマット:
構文:CASE WHEN B、次いでC [ * [ELSE F] END電子次いで日間WHEN] 戻り値:T A:Bに等しい場合、Cを返し、Dに等しい場合は、次にそれ以外の場合はF、Eは返す
SELECT
ケース6。
"いつその後、1。100"の
とき2、次いで"200"
とき3、次いで"300"
とき4その後、「400」
他「その他」
終了

##创建表
CW(存在しない場合は、テーブルを作成
フラグINTを


テーブルのCWにデータをロードし、ローカルINPATH「/ホーム/フラグ」;
##第一种格式
セレクト
ケースc.flag
1は、次いで、「100」
2、次いで「200」
3、次いで「300」
4次に「400」
他「その他」
終了
CW Cから

##第二种格式
選択し
た場合を
場合= c.flag 1は、次いで、 "100"の
場合2 = c.flag次いで、 "200"
3 = c.flag次いで、 "300"
とき4 = c.flag次いで、 "400"
、「他その他」




構文:regexpreplace(列A、列B 、列C) 戻り値:文字列説明:部分的に置換されたJava Bに準拠陽性発現の文字列がCです。いくつかのケースではエスケープ文字を使用することに注意してください、の神託に似regexpreplace機能
SELECT REGEXP_REPLACE;(「1.jsp」、「HTML」「JSP。」)
7、型変換関数:キャスト
構文:キャスト(式expr期待"=" "従う:戻り値)としてタイプ" 説明:データ型変換返す
SELECT 1;
キャスト(ダブルAS 1)を選択し;
キャスト()intとして"12は" SELECT;
8、文字列連結関数:連結;区切り文字列連結関数:CONCAT_WSの
構文:CONCAT(文字列、文字列B ...) 戻り値:文字列説明:任意の入力文字列のサポート、入力結果に接続された文字列を返す
構文:CONCAT_WSを(列9月、文字列、文字列B ...)戻り値:文字列説明:入力結果に接続された文字列を返し、SEPが各文字列間の区切りを表す
「Shiqianfeng」+ 1603 +「クラス」を選択し、
(「Shiqianfeng」連結を選択、1603年、 "クラス");
SELECT CONCAT_WS( "|"、 "

ROWNUMBER():ランキングしない平行ランク():並行してランク付けが、ギャップDENSERANK():隙間なく、並列にランキング
データ##
IDスコアクラス
。1 1 90
2 85 1
3 1 87
4 60 1
5 82 2
。6 2 70
2 67 7
8 2 88
。9 93 2

1 1 90 1
3 1 2 87
2 1 85 3
9 2 93 1
8 2 88 2
10 2 82 3

uscore存在しない場合は、テーブルを作成する(
UIDのINT、
CLASSID int型、
ダブルスコア

「\ tの」によって終了行形式区切られたフィールドを

テーブルuscoreへの負荷データのローカルINPATH「/ホーム/ uscore」;
選択
、u.uid
、u.classid
u.scoreを
uscore Uから
u.classid、u.uid、u.scoreによって基
リミット3

選択
u.uid、
u.classid、
u.score、
ROW_NUMBER()RN(u.score DESCによってu.classidソートにより配布)上に
U uscoreから

取前三名
選択
t.uid、
t.classid、
Tは。スコア
から

選択し
、u.uid
u.classid、
u.score、
ROW_NUMBER()RN(u.score DESCによってu.classidソートを配布することにより)オーバー
uscore Uから
)T
WHERE t.rn <4。

3つのランキングの違いを参照して
選択
u.uid、
、u.classidを
U.スコア、
RN、(u.score DESCによって配布u.classid並び替え)上ROW_NUMBER()
ランク(u.score DESCによって配布u.classid並び替え)を介して)ランク(
配布u.classidによって(上)DENSE_RANK( DR)u.score DESCソート
uscore Uから
;
10.集約関数:
分()、MAX()、COUNT()、COUNT(DISTINCT)SUM()AVG()
。COUNT(1):であれば発生するようにライン値は、存在するか否か累積1つのカウント(*):N行の値であれば、空の所与のクラス計1つのカウント(COL)があるように:COL記載されている値が1つのカウント(異なるCOL)に蓄積されている:COL記載されている値と異なるのみ1.合計
11ヌル値操作が
操作の実質的に任意の数およびNULL、NULLを返す
SELECT 1 +ヌル。
1/0 SELECT;
2%のヌルを選択します。
12.同等の操作
SELECT = NULL NULL; #NULL
SELECT <=>ヌルヌル。#true

おすすめ

転載: blog.51cto.com/14479068/2428908