开发者社区> 唐玄奘> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

首次查询Rolap Cube子成员计数不准

简介:
+关注继续查看
昨天被Services Team提回来一个问题,说我们的产品在获取成员的子成员数量时,不时会出现数不准的问题。结果用他们提供的Cube反复试验,最终发现这个问题原来是由于Cube的Dimension存储格式是Rolap引起的,详细错误复现和原因大概是这样的。

    当我们把一个Cube的Dimension的存储格式设置为了Rolap后,在"第一次"访问这个Cube时,取回来的第一个Member(一般是All Level的那个自动Aggregate)的ChildCount始终是1000。这个第一次有个限制,是Cube冷查询的第一次,就是说Cube被处理后,还从来没有被访问过。因为一旦这个Rolap Cube被访问过后,Dimension就动态的刷新了,这时取到的ChildCount就是实际的正确数量值了。

    通过跟踪Adomd.net(8.0)的Member类的ChildCount属性,我们可以清楚地看到,这个1000其实就是一个在系统未取到真实的ChildCount时的一个默认数值:
    ChildCount1000.gif
    // return (long) (Convert.ToInt32(AdomdUtils.GetProperty(row2, "DisplayInfo"), CultureInfo.InvariantCulture) & 0xffff);

    虽然有这么一个不准确的ChildCount,但是只要该含有Rolap类型Dimension的Cube一旦被访问过,即下次查询是"热查询",这个ChildCount就会是正确的。不过微软建议Rolap类型Dimension一般用于超大量(10M个以上)Member的Dimension,所以我们应该不会太多的用到Rolap类型Dimension,所以Adomd.net默认返回1000似乎也算是可以接受的。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
筛选大于改变,点醒多于植入
筛选大于改变,点醒多于植入,期待与更多人交流!
0 0
1996. 游戏中弱角色的数量 : 排序成组贪心计数运用题
1996. 游戏中弱角色的数量 : 排序成组贪心计数运用题
0 0
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
0 0
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目
科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次迭代完成后,所有顶点都是InActive状态。
668 0
如何改变字段的统计信息
关键字:DBA_TAB_COL_STATISTICS DBMS_STATS set_column_stats 前几天优化一个sql语句,语句很长,里面有一段where条件status =1 or status is null,单独执行条件status=1 很快完成,但是单独使用status is null条件,执行计划就发生了变化,仔细询问,status的取值范围很小,仅仅0,1,2,null,我修改了回话的optimizer_index_cost_adj 参数,发现可以改变执行计划。
470 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
用计算和数据去改变整个世界
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载