首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >olap4j。MDX (XMLA)查询花费的时间太长

olap4j。MDX (XMLA)查询花费的时间太长
EN

Stack Overflow用户
提问于 2015-09-16 16:34:44
回答 1查看 457关注 0票数 2

我有一个简单的MDX查询。执行它所需的时间不到1秒:

代码语言:javascript
复制
SELECT
NON EMPTY {  } ON COLUMNS,
NON EMPTY
  {[Z_OP].[LEVEL01].MEMBERS *
   [Z_NV].[LEVEL01].MEMBERS *
   [Z_DT].[LEVEL01].MEMBERS }
ON ROWS
FROM
  [Z_TEST/Z_TEST_REQ]

但是,当我使用olap4j库时,执行它的时间超过30秒。下面是我的代码:

代码语言:javascript
复制
Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
final String query = "[query]";
final Connection connection =
    DriverManager.getConnection(
        "jdbc:xmla:Server=[URL]?sap-client=200;catalog=[catalog]",
        "[login]",
        "[password]");

final OlapConnection olapConnection = connection.unwrap(OlapConnection.class);

final CellSet cellSet = olapConnection
    .createStatement()
    .executeOlapQuery(query);

我发现它发出了额外的300个'discover‘请求来获取元数据(对于每个值成员/级别/属性等)。是否可以禁用或最小化这些请求的数量?

EN

回答 1

Stack Overflow用户

发布于 2015-09-16 23:06:35

这三个层次结构可能很大-如果您有一些度量可以与函数NonEmpty一起使用,那么也许可以添加一个WITH子句,使集合在命中SELECT之前变得更小

代码语言:javascript
复制
WITH 
   SET [OP] AS NONEMPTY([Z_OP].[LEVEL01].MEMBERS, [MEASURES].[EssentialMeasureInCube])
   SET [NV] AS NONEMPTY([Z_NV].[LEVEL01].MEMBERS, [MEASURES].[EssentialMeasureInCube])
   SET [DT] AS NONEMPTY([Z_DT].[LEVEL01].MEMBERS, [MEASURES].[EssentialMeasureInCube])
SELECT
  NON EMPTY {  } ON 0,
  NON EMPTY [OP] * [NV] * [DT] ON 1
FROM
  [Z_TEST/Z_TEST_REQ];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32603494

复制
相关文章

相似问题

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