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

2023-10-21 13:30
文章标签 无法 返回 sum 预期 kylin avg

本文主要是介绍【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中执行得到的结果是
在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

这篇关于【Kylin 踩坑之旅】kylin sum() avg() 无法返回预期的结果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254702

相关文章

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

struts2中的json返回指定的多个参数

要返回指定的多个参数,就必须在struts.xml中的配置如下: <action name="goodsType_*" class="goodsTypeAction" method="{1}"> <!-- 查询商品类别信息==分页 --> <result type="json" name="goodsType_findPgae"> <!--在这一行进行指定,其中lis是一个List集合,但

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

解决ubuntu系统无法与FinalShell无法连接问题

问题 解决方案 先下载ubuntu网络工具 sudo apt install net-tools 输入密码 下载完成后进入管理员模式查看密码 sudo -i hostname -I 查看IP 得到ip地址后再继续安装 openssh-server 插件 sudo apt-get install openssh-server 问题解决 尝试连接Fina

gazebo 已加载模型但无法显示

目录 写在前面的话问题一:robot_state_publisher 发布机器人信息失败报错一 Error: Error document empty.报错二 .xcaro 文件中有多行注释成功启动 问题二:通过 ros2 启动 gazebo 失败成功启动 问题三:gazebo 崩溃和无法显示模型问题四: 缺少 robot_description 等话题正确的输出 写在前面的话