我正在使用 olap4j 1.2.0 连接到 Microsoft Analysis Services。
我的代码是
Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
OlapConnection olapConnection = DriverManager.getConnection(
"jdbc:xmla:Server=http://myserver:1234/OLAP/msmdpump.dll;Catalog=mycatalog")
.unwrap(OlapConnection.class);
CellSet cellSet = olapConnection.createStatement().executeOlapQuery("<MDX query>");
所以,当我使用 Excel 时,查询大约需要一秒钟。我从 Excel 中获取 MDX 查询字符串(使用宏)并将其放入我的代码中的“MDX 查询”中。执行大约需要 145 秒(取决于日期过滤器和获取数据的大小)。
我想,Excel 使用 MSAS 的缓存,但 olap4j 没有。我知道,olap4j 使用它自己的缓存——当我执行 2 个相同的 olap 查询时,第二个查询执行得非常快(约 300 毫秒)。
问题是“有没有办法告诉 olap4j 使用 MSAS 缓存?”
我猜是Excel使用OLEDB连接MSAS,缓存策略是在连接字符串中指定的(或者是OLEDB驱动默认提供的,我不知道),但是我在XmlaOlap4jDriver中没有找到类似的参数。
对不起,我的英语不太好,提前谢谢。