溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL-Hive中Select From怎么用

發(fā)布時間:2021-12-10 14:58:29 來源:億速云 閱讀:333 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了SQL-Hive中Select From怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

01-查詢表中的內(nèi)容

查詢指定的某一列或某幾列,命令如下:

SELECT 列名1,列名2,…… FROM 表名;

查詢表中的所有字段時,可以使用*代表所有字段。星號(*)是選取所有列的快捷方式。命令如下:

SELECT * FROM 表名;

如果我們想查詢表 t_od_use_cnt 中的所有的user_id和use_cnt,具體命令如下:

SELECT user_id       ,use_cnt FROM app.t_od_use_cnt;

備注:app是數(shù)據(jù)庫名,如果當(dāng)前查詢表與當(dāng)前使用數(shù)據(jù)庫一致,可以省略不寫

02-Hive嚴格模式

在Hive中這樣寫雖然語法正確(不加分區(qū)),但在實際工作中這樣寫很可能會報錯。

因為Hive中的表一般數(shù)據(jù)量極大,為了防止用戶誤操作進行全表掃描,可以設(shè)置為查詢分區(qū)表時必須加入分區(qū)限制。比如這里我們的分區(qū)字段是date_8這個日期字段,工作中的表會要求我們必須限定查詢哪幾天的分區(qū)數(shù)據(jù)。這里我們可以輸入設(shè)置參數(shù)進行模擬,命令如下:

hive (app)> set hive.mapred.mode; hive.mapred.mode=nonstrict hive (app)> set hive.mapred.mode=strict; hive (app)> set hive.mapred.mode; hive.mapred.mode=strict

然后我們重新執(zhí)行上面的查詢語句,報錯如下:

hive (app)> SELECT user_id           >       ,use_cnt           > FROM app.t_od_use_cnt; FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "t_od_use_cnt" Table "t_od_use_cnt" hive (app)>

如下使用where語句限定分區(qū)即可解決這個問題:

SELECT user_id       ,use_cnt FROM app.t_od_use_cnt WHERE date_8 = '20210420';

03-limit限制查詢返回行數(shù)

上面的查詢語句會返回查詢到的所有數(shù)據(jù),但有時候我們只是要確認一下表中的數(shù)據(jù)內(nèi)容,或者要指定行數(shù)據(jù),比如只要100行,這時只需要在查詢語句后加上(limit  數(shù)字)即可。

查詢表t_od_use_cnt中前5行數(shù)據(jù),命令如下:

SELECT user_id       ,use_cnt FROM app.t_od_use_cnt WHERE date_8 = 20190101 Limit 5;

運行結(jié)果如下:

hive (app)> SELECT user_id           >       ,use_cnt           > FROM app.t_od_use_cnt           > WHERE date_8 = 20210420 Limit 5; OK user_id  use_cnt 10000  6 10001  49 10002  23 10003  1 10004  29 Time taken: 0.829 seconds, Fetched: 5 row(s) hive (app)>

04-列四則運算

在查詢時可以對數(shù)值類型的字段進行加減乘除和取余等四則運算

SQL-Hive中Select From怎么用

下面我們將表t_od_use_cnt中use_cnt列和is_active列相乘得到一個新列,其他用法依次類推。

hive (app)> SELECT user_id           >       ,use_cnt           >       ,is_active           >       ,use_cnt * is_active           > FROM app.t_od_use_cnt           > WHERE date_8 = 20210420 Limit 5; OK user_id  use_cnt  is_active  _c3 10000  6  1  6 10001  49  1  49 10002  23  1  23 10003  1  0  0 10004  29  1  29 Time taken: 0.124 seconds, Fetched: 5 row(s) hive (app)>

05-列別名

可以看到上面的例子中我們通過兩個列相乘人為制造出一個新列,系統(tǒng)默認將其列名起為_c3。通常有必要給這些新產(chǎn)生的列起一個別名。已有列的列名如果含義不清晰也可以通過起別名的方式進行更改。不過別名只在本條SQL語句中生效,不影響原表中的字段名。

這里順便介紹一下字段命名規(guī)則:

1.不能和已有字段重復(fù)

2.只能包括小寫字母(a-z)、數(shù)字(0-9)、下劃線(_)

3.以字母開頭

4.單詞之間用下劃線_分割

這里我們將別名起為active_use_cnt,在列后面加 AS active_use_cnt即可。另AS可以省略,只用空格分隔別名也可以生效

hive (app)> SELECT user_id           >       ,use_cnt           >       ,is_active           >       ,use_cnt * is_active AS active_use_cnt           > FROM app.t_od_use_cnt           > WHERE date_8 = 20210420 Limit 5; OK user_id  use_cnt  is_active  active_use_cnt 10000  6  1  6 10001  49  1  49 10002  23  1  23 10003  1  0  0 10004  29  1  29 Time taken: 0.239 seconds, Fetched: 5 row(s) hive (app)>

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SQL-Hive中Select From怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI