Mdx 我应该使用什么来代替不推荐的mondrian.olap.Connection::execute?
所以我尝试在Java 1.8中使用Mondrian 3.14,所以我做了如下操作:Mdx 我应该使用什么来代替不推荐的mondrian.olap.Connection::execute?,mdx,olap,mondrian,olap4j,Mdx,Olap,Mondrian,Olap4j,所以我尝试在Java 1.8中使用Mondrian 3.14,所以我做了如下操作: String catalogFilePath = "<path>/mdx_schema.xml"; String connectUrl = "Provider=mondrian;" + "Jdbc=jdbc:postgresql://example.com:5432/database?user=user&password=pass;" + "Jd
String catalogFilePath = "<path>/mdx_schema.xml";
String connectUrl = "Provider=mondrian;" +
"Jdbc=jdbc:postgresql://example.com:5432/database?user=user&password=pass;" +
"JdbcDrivers=org.postgresql.Driver;" +
"Catalog=file:" + catalogFilePath + ";";
Connection connection = DriverManager.getConnection(connectUrl, null);
String qs = "<query>";
Query q = connection.parseQuery(qs);
Result r = connection.execute(q);
String catalogFilePath=“/mdx_schema.xml”;
String connectUrl=“Provider=mondrian;”+
“Jdbc=Jdbc:postgresql://example.com:5432/database?user=user&password=pass;" +
“JdbcDrivers=org.postgresql.Driver;”+
目录=文件:“+catalogFilePath+”;”;
Connection Connection=DriverManager.getConnection(connectUrl,null);
字符串qs=“”;
Query q=connection.parseQuery(qs);
结果r=连接。执行(q);
但是,如上所述,Connection::execute
不推荐使用:
不赞成。此方法已弃用,将在mondrian-4.0中删除。它通过在内部创建语句来运行。最好使用olap4j并显式创建语句
那么,我应该在olap中使用什么来执行查询呢?因此我实际上找到了答案:
导入java.io.PrintWriter;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入org.olap4j.CellSet;
导入org.olap4j.OlapConnection;
导入org.olap4j.OlapStatement;
导入org.olap4j.OlapWrapper;
导入org.olap4j.layout.RectangularCellSetFormatter;
导入java.sql.SQLException;
公共静态void main(字符串[]args)抛出SQLException、ClassNotFoundException{
类forName(“mondrian.olap4j.MondrianOlap4jDriver”);
字符串catalogFilePath=“/mdx_schema.xml”;
String connectUrl=“jdbc:mondrian:”+
“Jdbc=Jdbc:postgresql://example.com:5432/database?user=user&password=pass;" +
“JdbcDrivers=org.postgresql.Driver;”+
目录=文件:“+catalogFilePath+”;”;
Connection Connection=DriverManager.getConnection(connectUrl);
OlapWrapper包装器=(OlapWrapper)连接;
OlapConnection OlapConnection=wrapper.unwrap(OlapConnection.class);
OlapStatement语句=olapConnection.createStatement();
字符串qs=“”;
CellSet CellSet=statement.executeOlapQuery(qs);
RectangularCellSetFormatter formatter=新的RectangularCellSetFormatter(false);
PrintWriter=新的PrintWriter(System.out);
formatter.format(单元集、编写器);
writer.flush();
connection.close();
}
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import org.olap4j.CellSet;
import org.olap4j.OlapConnection;
import org.olap4j.OlapStatement;
import org.olap4j.OlapWrapper;
import org.olap4j.layout.RectangularCellSetFormatter;
import java.sql.SQLException;
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
String catalogFilePath = "<path>/mdx_schema.xml";
String connectUrl = "jdbc:mondrian:" +
"Jdbc=jdbc:postgresql://example.com:5432/database?user=user&password=pass;" +
"JdbcDrivers=org.postgresql.Driver;" +
"Catalog=file:" + catalogFilePath + ";";
Connection connection = DriverManager.getConnection(connectUrl);
OlapWrapper wrapper = (OlapWrapper) connection;
OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);
OlapStatement statement = olapConnection.createStatement();
String qs = "<query>";
CellSet cellSet = statement.executeOlapQuery(qs);
RectangularCellSetFormatter formatter = new RectangularCellSetFormatter(false);
PrintWriter writer = new PrintWriter(System.out);
formatter.format(cellSet, writer);
writer.flush();
connection.close();
}