本文主要是介绍【Kylin 踩坑之旅】kylin sum() avg() 无法返回预期的结果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在使用kylin 的时候遇到了avg()函数无法求出预期值的情况,通过检查发现sum()函数也无法得出预期值,所以通过查询多方资料找到了问题所在
- sum 函数与avg 函数无法返回正确的结果
- 可能会遇到的其他错误
-
- 错误一
- 错误
- 原因
- 解决办法
- 错误一
-
- 参考资料
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中执行得到的结果是
很明显得到的数据有问题
这是因为price在我这里被设置为维度的原因,我们需要将它转化为度量
【1】 在Cube Designer中点击添加Measure
【2】 勾选Also Show Dimensions 后选择相应字段,点击ok保存
【3】在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
这篇关于【Kylin 踩坑之旅】kylin sum() avg() 无法返回预期的结果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!