kylin是一款还算不错的大数据分析软件。即对表的维度进行类似笛卡尔积种情况的聚合统计。 事实表A有5个字段,含有维度字段1,维度字段2,维度字段3,数值1,数值2 维度字段有10个数值,维度字段2有5个数值,维度字段3有6个数值 那么kylin做的事情就是对10*5*6种情况对数值1、数值2进行各种聚合统计。
主要适用于数值的sum
吐槽1:count,虽然记录数统计是默认自带的,但是仅仅在kylin web中的insight中以count(1)的形式存在,那么当我们使用Tableau通过odbc访问的时候,只能取到A表的5个字段,不能取到count,这就尴尬了。我的临时解决方案,就是在hive建A表的时候,添加一个字段名叫total_records,数值为1。然后total_records设为数值,对其进行sum,那么记录数就存在这个字段里了。
mysql每次通过sqoop抽取的时候要记得写别名,否则会报错
select order_id,total_amount,DATE_FORMAT(modify_time,'%Y-%m-%d %H:00:00') as modify_time,state,payment_type,1 as total_recordsfrom tr_order_thrid where STATE<>1 and modify_time>='${startTime}' and modify_time<'${endTime}' |
吐槽3:分析计算自然就要进行定时任务处理,kylin自身没有这个功能,所以只能通过调用RESTful api,定时增量触发创建cube需要传输起始和截止时间点,这里用的是绝对毫秒数(linux shell date +%s),槽点就在这里,kylin收到请求后会对这两个时间点自动减28800000毫秒即8小时,我去~~~~~~~~文档和书都不说的。
吐槽4:kylin不支持的函数以及sql写法比较多,估计大数据处理最擅长对分类信息进行计数,对于占内存较多的复杂逻辑判断是屏蔽的。
1、日期函数的处理,例如日期前后计算。
2、不支持笛卡尔积查询,select * from a,b
3、不支持临时字段的多层嵌套
select t_hour,sum(va1),sum(va2),sum(va3) from (
select t_hour,
(case when t_day=10 then total_amount else 0 end) as va1,
(case when t_day=9 then total_amount else 0 end) as va2,
(case when t_day=8 then total_amount else 0 end) as va3
from tr_order_thrid where
t_year=2018 and t_month=1
and state='2' and payment_type='14'
) z group by t_hour
4、不擅长做时间为轴的折线图。
如果要有时间轴,那么必须要把时间作为维度,年度做维度还行,但如果要精确到小时甚至分的话,那时间维度基数太大,其计算量巨大,时间甚至是关系库的几万倍。这一块建议用时序数据库吧,例如influxdb+grafana
希望kylin在后续版本能做的更人性化点吧。
kylin版本:apache-kylin-2.1.0-bin-hbase1x