8、hql的执行顺序
SQL的执行顺序:
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY 排序
7、hive中时间处理函数:
(1)unix时间戳转换成为时间(日期 时间): 2016-08-22 11:23:34
from_unixtime(time,’yyyy-MM-dd HH-mm-ss’)
(2)将指定时间字符串格式的字符串转换成为Unix时间戳,如果格式不对返回0
unix_timestamp(‘2009-03-20’,’yyyy-MM-dd’)=1237532400
(3)获取当前本地时区下的当前时间戳,输入的格式必须是yyyy-MM-dd HH:mm:ss
unix_timestamp(‘2009-03-20 11:30:01’)=123757380
(4)返回时间字符串的日期部分:to_date(string timestamp)
to_date(“2009-03-20 11:30:01”)=“2009-03-20”
(5)分别返回时间字符串中的年、月、日、时、分、秒函数:
year(string date)
month(string date)
day(string date)
hour(string date)
minute(string date)
second(string date)
(6)计算开始时间startdate到结束时间enddate相差的天数
datediff(string enddate,string startdate)
hive> select datediff('2016-08-22','2016-08-20’);
结果:2
(7)为开始的时间增加n天:date_add(string startdate, int n)
hive> select date_add('2016-08-20',2);
结果:2016-08-22
(8)从开始的时间减去n天:date_sub(string startdate, int n)
hive> select date_sub('2016-08-20',2);
结果:2016-08-18
6、case…when…then…end 用于处理单个列的查询结果
5、between…and… 包含边界值
4、逻辑为或的时候,要用Union all 操作
逻辑为且的时候,可以用inner join操作
3、字符串截取函数:substring( )
substring(string, int ,int)作用:返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。
例子:
调用以下函数返回“234”:SubString("12345",2,3)
调用以下函数返回“2345”:SubString("12345",2)
2、 regexp_extract(string subject,string pattern, int index)
返回值:string
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符
例如:hive> select regexp_extract('foothebar','foo(.*?)(bar)',1);
结果:the
hive> select regexp_extract('foothebar','foo(.*?)(bar)',2);
结果:bar
hive> select regexp_extract('foothebar','foo(.*?)(bar)',0);
结果:foothebar
1、regexp_replace函数,把一个字符串用另外一个字符串来代替
语法:regexp_replace(string A,string B,string C)
返回值:string
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符。
例如:hive> select regexp_replace('foobar','oo|ar','');
结果: fb