olap4j。 MDX(XMLA)查询需要太长时间

时间:2015-09-16 08:34:44

标签: java mdx xmla olap4j

我有简单的MDX查询。执行它只需不到1秒钟:

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秒。这是我的代码:

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'发现'获取元数据的请求(针对每个价值成员/级别/财产等)。是否可以禁用或最小化这些请求的数量?

1 个答案:

答案 0 :(得分:0)

这三个层次结构可能很大 - 如果你有一些可以与函数NonEmpty一起使用的度量,那么也许你可以添加一个WITH子句来使集合更小,然后点击{{ 1}}:

SELECT