【Kylin 踩坑之旅】kylin sum() avg() 无法返回预期的结果

在使用kylin 的时候遇到了avg()函数无法求出预期值的情况,通过检查发现sum()函数也无法得出预期值,所以通过查询多方资料找到了问题所在

sum() 函数与avg() 函数无法返回正确的结果

之前使用select语句求和的时候遇到了这样的问题:
在kylin中执行

SELECT  price,count(price) ,sum(price) ,avg(price) FROM hive_test_order group by price;

返回结果为

EXPR$0	EXPR$1  EXPR$2
58  321 5.534482759
76  407 5.355263158
71  410 5.774647887
74  416 5.621621622
79  390 4.936708861
73  390 5.342465753
64  409 6.390625
80  420 5.25
64  375 5.859375

而在hive中执行得到的结果是
在hive中执行得到的结果

很明显得到的数据有问题

这是因为price在我这里被设置为维度的原因,我们需要将它转化为度量

【1】 在Cube Designer中点击添加Measure
在Cube Designer中点击添加Measure

【2】 勾选Also Show Dimensions 后选择相应字段,点击ok保存
勾选Also Show Dimensions 后选择相应字段,点击ok保存

【3】在Advanced Setting步骤中确认以下刚刚添加的是否在Advanced ColumnFamily当中
在Advanced Setting步骤中确认以下刚刚添加的是否在Advanced ColumnFamily当中
再次执行

SELECT  count(price) ,sum(price) ,avg(price) FROM  test.hive_test_order group by userid;
EXPR$0	EXPR$1  EXPR$2
58  849     14.63793103
76  1238    16.28947368
71  947     13.33802817
74  1211    16.36486486
79  1096    13.87341772
73  1004    13.75342466
64  1014    15.84375
80  1100    13.75
64  1026    16.03125

这样一看avg() 函数也恢复正常,这是因为kylin的avg函数是 sum/count得到的结果,sum不正确avg自然也就得不到正确结果。

可能会遇到的其他错误

错误一

错误:

Error Message
CubeDesc xxx is inconsistent with existing. Try purge that cube first or avoid updating key cube desc fields.
这里写图片描述

原因:

cobe发生了改变,而修改之前cube已经创建了相关的job,生成了处理结果。

解决办法:

需要将原处理结果清除掉。
这里写图片描述

参考资料

【1】 http://apache-kylin.74782.x6.nabble.com/sum-function-error-td8564.html
【2】 http://blog.csdn.net/yu616568/article/details/48103415

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值