dual的構造
自己構造即可乙個函式幾個,在隨後的select 測試 from dual;
前後兩行求時間差
1.hive row_number() 函式的高階用法 row_num 按照某個字段分割槽顯示第幾條資料
select imei,ts,fuel_instant,gps_longitude,gps_latitude,row_number() over (partition by imei order by ts asc) as row_num
from sample_data_2
2.row_num 是相互連續的,join 自身,然後時間相減可求差
create table obd_20140101 as
select a.imei,a.row_num,a.ts,coalesce(unix_timestamp(a.ts, 『yyyy-mm-dd hh:mm:ss.s『), 0) - unix_timestamp(b.ts, 『yyyy-mm-dd hh:mm:ss.s『) as intervel ,a.fuel_instant,a.gps_speed as obd_speed,a.gps_status,a.gps_longitude,a.gps_latitude,a.direct_angle,a.obdspeed from obddata_20140101 a join obddata_20140101 b on a.imei = b.imei and a.row_num = b.row_num +1
分組排序求每個類別的top10
語法:row_number() over (partition by 欄位a order by 計算項b desc ) rank
--這裡rank是別名
partition by:類似hive的建表,分割槽的意思;
order by :排序,預設是公升序,加desc降序;
這裡按欄位a分割槽,對計算項b進行降序排序
例項:要取top10品牌,各品牌的top10渠道,各品牌的top10渠道中各渠道的top10檔期
1、取top10品牌
select 品牌,count/sum/其它() as num from
table_name
order by num limit 10;
2、 取top10品牌下各品牌的top10渠道
select
a.*
from (
select 品牌,渠道,count/sum/其它() as num row_number() over (partition by 品牌 order by num desc ) rank
from table_name
where 品牌限制條件
group by 品牌,渠道 )a
where
a.rank<=10
3、 取top10品牌下各品牌的top10渠道中各渠道的top10檔期
select
a.*from
(select 品牌,渠道,檔期,count/sum/其它() as num row_number() over (partition by 品牌,渠道 order by num desc ) rank
from table_name
where 品牌,渠道 限制條件
group by 品牌,渠道,檔期
)awhere
a.rank<=10
待續
hive應用示例
簡單示例 我們以以下資料作為測試資料,結構為 班級號,學號,成績 c01,n0101,82 c01,n0102,59 c01,n0103,65 c02,n0201,81 c02,n0202,82 c02,n0203,79 c03,n0301,56 c03,n0302,92 c03,n0306,72 ...
hive應用例項1
我們沿用之前hadoop wordcount的結果資料 hadoop icity0 hadoop fs cat wc out part r 00000 warning hadoop home is deprecated.beautiful1 day1 dear2 hello2 hometown1 h...
Hive深入應用總結
記錄下官方文件上講的比較少,覺得有用的hive相關知識,絕對乾貨。命令 表明tb1 describe extended tb1 返回表tb1欄位,儲存格式型別,位置,修改時間等等關於表的詳細資訊 show functions 顯示可以用的函式列表,包括可用的udf函式。describe functi...