牛骨文教育服务平台(让学习变的简单)
博文笔记

《KyLin学习理解》-03-KyLin的坑总结

创建时间:2017-07-19 投稿人: 浏览次数:706

坑1:KyLin中不能使用 != 不等于符合,否则会报错,但是某些业务需要用不等于,kylin中也不能使用 <> 不等于,用or的话,可能会短路。
解决:新建一个字段区分,不等于的两种状态。

坑2:KyLin中不能使用 双引号,否则保错

Error while executing SQL "select myview.*,mycase.*,wb.*,hotel.*,p_status from myview inner join mycase on myview.v_code=mycase.c_code inner join wb on myview.v_w_id=wb.w_id inner join hotel on myview.v_h_id=hotel.h_id inner join p_case on myview.v_code=p_case.p_code where p_isend = 1 and v_code="A3402024100002011120248" LIMIT 50000": From line 1, column 274 to line 1, column 298: Column "A3402024100002011120248" not found in any table

解决:使用单引号

坑3:假设有一段数据

1         2006/6/21 14:15  姚姗家被盗案 
2         2006/6/22 14:15  姚姗家被盗案 
3         2006/6/23 14:15  姚姗家被盗案 
4         2006/6/24 14:15  姚姗家被盗案 
5         2006/6/25 14:15  暂无           
6         2006/6/26 14:15  暂无           

如果有业务:求第三条数据的前后两天的数据。我们需要计算,把第三条的数据先查询出来时间,然后进行运算,然后,再查询,如果时间格式是这样的是没办法实现的,我们可以,在hive里多加1个字段存储时间戳
变成如下格式:

1         2006/6/21 14:15 1150956900000 姚姗家被盗案 
2         2006/6/22 14:15 1150956900000 姚姗家被盗案 
3         2006/6/23 14:15 1150956900000 姚姗家被盗案 
4         2006/6/24 14:15 1150956900000 姚姗家被盗案 
5         2006/6/25 14:15 1150956900000 暂无          
6         2006/6/26 14:15 1150956900000 暂无      

然后查询的时候

select * from 表名  where ( 字段-86400000 * 天数 )< 字段 and 字段< (字段+ 86400000*天数 ) ;

时间问题就解决了。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。