寫寫日常在使用Hive SQL做分析時經(jīng)常使用的一些函數(shù)或者方法
like
- like用于指定特定的字符串,或結(jié)合正則做模糊匹配
select uid from dw.today where tunittype like '%wew.%'
- rlike是hive中對like的擴展队橙,將原先多個like才能完成的任務(wù)戴而,使用一個rlike就可以搞定笋额。
select uid from dw.today where tunittype rlike '.*(you|me).*'
點號(.):表示和任意字符串匹配破婆,星號(*):表示重復(fù)“左邊的字符串”,(x|y)表示和x或者y匹配
- 對like取反
一般院究,like的語法形式是: A LIKE B,取反的語法形式:NOT A LIKE B
select uid from dw.today where not tunittype like '%wew.%'
時間區(qū)間
工作中本涕,需要查詢某個區(qū)間的用戶量业汰,這個時候就需要對時間做處理,以便快速搞定
- 30分鐘作為一個區(qū)間段
SELECT DISTINCT FROM_UNIXTIME(60*30*CAST(UNIX_TIMESTAMP("2017-11-11 13:23:23")/(60*30) AS BIGINT), 'yyyy-MM-dd HH:mm:ss')
FROM test_table
這里便將時間轉(zhuǎn)化為13:00:00菩颖,記錄的是13:00:00至13:30:00這段時間的數(shù)據(jù)量
- 10分鐘作為一個區(qū)間段
SELECT DISTINCT FROM_UNIXTIME(60*10*CAST(UNIX_TIMESTAMP("2017-11-11 13:23:23")/(60*10) AS BIGINT), 'yyyy-MM-dd HH:mm:ss')
FROM test_table
總結(jié):一個小時60分鐘样漆,一分鐘60秒,按照時間單位的秒來轉(zhuǎn)化為相應(yīng)的區(qū)間
排序
語法形式:
row_number() over (partition by 字段 a order by 計算項 b desc ) rank
rank 排序的名稱晦闰;partition by:類似 hive 的建表放祟,分區(qū)的意思;order by :排序呻右,默認是升序跪妥,加 desc 降序;這里按字段 a 分區(qū)声滥,對計算項 b 進行降序排序
當(dāng)前時間
SELECT from_unixtime(unix_timestamp())
類型轉(zhuǎn)換
cast() 函數(shù)將字符串轉(zhuǎn)換為整數(shù)眉撵、雙精度浮點數(shù)或執(zhí)行反向轉(zhuǎn)換
可參考這個博客:https://blog.csdn.net/xiaoshunzi111/article/details/54343291/
case .. when .. then句式
沒錯,在機器學(xué)習(xí)中給數(shù)據(jù)打標簽過程最常用到的sql語句,主要用于處理單個列的查詢結(jié)果
create table if not exists dw.huodong_uid_label as
select uid,
CASE
WHEN action=0 THEN 0
ELSE 1
END AS label from zhangxiang.huodong_action_0_2
未完待續(xù)纽疟。罐韩。。污朽。散吵。。