日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQL-Hive中SelectFromsql具體使用方法

Select Fromsql里面最基本的查詢語句,select*from后面加表名,這樣查詢出來是這個(gè)表里面的所以數(shù)據(jù),后面還可以加where條件挑選,也能夠加Orderby排序,也能夠加groupby分組,下面為大家分享一下SQL-Hive中Select Fromsql具體使用方法。

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

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

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

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

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嚴(yán)格模式

在Hive中這樣寫雖然語法正確(不加分區(qū)),但在實(shí)際工作中這樣寫很可能會(huì)報(bào)錯(cuò)。

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

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í)行上面的查詢語句,報(bào)錯(cuò)如下:

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ū)即可解決這個(gè)問題:

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

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

上面的查詢語句會(huì)返回查詢到的所有數(shù)據(jù),但有時(shí)候我們只是要確認(rèn)一下表中的數(shù)據(jù)內(nèi)容,或者要指定行數(shù)據(jù),比如只要100行,這時(shí)只需要在查詢語句后加上(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;

運(yùn)行結(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-列四則運(yùn)算

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

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

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;OKuser_id  use_cnt  is_active  _c310000  6  1  610001  49  1  4910002  23  1  2310003  1  0  010004  29  1  29Time taken: 0.124 seconds, Fetched: 5 row(s)hive (app)>

05-列別名

可以看到上面的例子中我們通過兩個(gè)列相乘人為制造出一個(gè)新列,系統(tǒng)默認(rèn)將其列名起為_c3。通常有必要給這些新產(chǎn)生的列起一個(gè)別名。已有列的列名如果含義不清晰也可以通過起別名的方式進(jì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)>

網(wǎng)頁名稱:SQL-Hive中SelectFromsql具體使用方法
文章分享:http://www.dlmjj.cn/article/cdjiijp.html