首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mondrian.olap.ResourceLimitExceededException: Mondrian错误:要读取的成员数超过限制(10,000)

mondrian.olap.ResourceLimitExceededException: Mondrian错误:要读取的成员数超过限制(10,000)
EN

Stack Overflow用户
提问于 2020-10-03 22:25:05
回答 1查看 127关注 0票数 1

我有一个类似的问题,在下面的帖子中报道的五角大楼博客:

https://forums.pentaho.com/threads/47819-Help-regd-member-restriction/?p=141499

这个查询非常简单:

代码语言:javascript
复制
MDX: SELECT NON EMPTY {[Measures].[QTD_EMPRESAS]} on 0, NON EMPTY {[BAIRRO.BAIRRO_H].[TODOS_BAIRRO_H],[BAIRRO.BAIRRO_H].[06], [BAIRRO.BAIRRO_H].[061]} on 1 FROM [V_DM_EMPRESAS_LOCALIDADE] WHERE {[BAIRRO_F.BAIRRO_H].[06],[BAIRRO_F.BAIRRO_H].[061]}

如果我使用一个过滤器,它会成功返回,但如果使用两个过滤器,就会出现上面的查询错误。这两个筛选器总共添加了200条记录,小于错误中报告的限制。

维度BAIRRO有超过10000条记录,但我只过滤了两条BAIRRO。

出现错误:

代码语言:javascript
复制
Caused by: mondrian.olap.ResourceLimitExceededException: Mondrian Error:Number of members to be read exceeded limit (10,000)
    at mondrian.resource.MondrianResource$_Def11.ex(MondrianResource.java:1180)
    at mondrian.rolap.SqlMemberSource.getMemberChildren2(SqlMemberSource.java:993)
    at mondrian.rolap.SqlMemberSource.getMemberChildren(SqlMemberSource.java:891)
    at mondrian.rolap.SqlMemberSource.getMemberChildren(SqlMemberSource.java:864)
    at mondrian.rolap.NoCacheMemberReader.getMemberChildren(NoCacheMemberReader.java:179)
    at mondrian.rolap.RolapCubeHierarchy$NoCacheRolapCubeHierarchyMemberReader.readMemberChildren(RolapCubeHierarchy.java:970)
    at mondrian.rolap.RolapCubeHierarchy$NoCacheRolapCubeHierarchyMemberReader.getMemberChildren(RolapCubeHierarchy.java:1027)
    at mondrian.rolap.NoCacheMemberReader.getMemberChildren(NoCacheMemberReader.java:159)
    at mondrian.rolap.RolapSchemaReader.internalGetMemberChildren(RolapSchemaReader.java:186)
    at mondrian.rolap.RolapSchemaReader.getMemberChildren(RolapSchemaReader.java:169)
    at mondrian.rolap.RolapSchemaReader.getMemberChildren(RolapSchemaReader.java:162)
    at mondrian.olap.DelegatingSchemaReader.getMemberChildren(DelegatingSchemaReader.java:78)
    at mondrian.olap.fun.AggregateFunDef$AggregateCalc.getChildCount(AggregateFunDef.java:571)
    at mondrian.olap.fun.AggregateFunDef$AggregateCalc.optimizeMemberSet(AggregateFunDef.java:490)
    at mondrian.olap.fun.AggregateFunDef$AggregateCalc.optimizeChildren(AggregateFunDef.java:398)
    at mondrian.olap.fun.AggregateFunDef$AggregateCalc.optimizeTupleList(AggregateFunDef.java:252)
    at mondrian.rolap.RolapResult.<init>(RolapResult.java:314)
    at mondrian.rolap.RolapConnection.executeInternal(RolapConnection.java:662)
    at mondrian.rolap.RolapConnection.access$000(RolapConnection.java:52)
    at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:613)
    at mondrian.rolap.RolapConnection$1.call(RolapConnection.java:611)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

为了避免这个bug,在Mondrian schema中,我配置了角色,在HierarchyGrant配置中,我将rollupPolicy设置为false。

这真的是一个好策略吗?还是有更好的选择?

EN

回答 1

Stack Overflow用户

发布于 2021-01-20 01:32:39

角色和层次结构授权是为了安全性,所以我不会设置它们,除非您需要它们来进行数据访问控制。

您的mondrian.result.limit配置设置似乎设置得太低,为10,000。为了优化Mondrian的性能,我会从这个mondrian.properties开始,并从那里调整设置:

https://github.com/pentaho/pentaho-platform/blob/master/assemblies/pentaho-solutions/src/main/resources/pentaho-solutions/system/mondrian/mondrian.properties

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64185262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档