如何使用olap4j api从模式文件中获取mysql列名

时间:2014-02-20 07:31:05

标签: java business-intelligence mondrian olap4j

我是BI概念和mondrian的初学者。我正在使用olap4j APImondrian服务器,我的要求是在模式中映射mysql列名有关数据库的文件或元数据。基本上我能够连接并可以使用foodmart样本数据执行示例查询。请提供示例代码以获取列名称(我正在使用mysql)或db metadata

我正在尝试的示例代码是

        Class.forName("mondrian.olap4j.MondrianOlap4jDriver");
        Connection connection = DriverManager
                .getConnection("jdbc:mondrian:Jdbc=jdbc:mysql://localhost:3306/foodmart;Provider=Mondrian;"
                        + "Catalog=D:/Softwares/mondrian-3.2.0.13661/demo/FoodMart.xml;PoolNeeded=false;JdbcUser=root;JdbcPassword=admin123;JdbcDrivers=com.mysql.jdbc.Driver;");

        OlapWrapper wrapper = (OlapWrapper) connection;
        OlapConnection olapConnection = wrapper
                .unwrap(OlapConnection.class);

        NamedList<Cube> cubes = olapConnection.getOlapSchema().getCubes();
        for (Cube eachCube : cubes) {

            System.out.println(" Cube name..." + eachCube.getName());

            for (Measure measure : eachCube.getMeasures()) {

                System.out.println(" Measures " + measure.getName());
                System.out.println("Measure Levels...."
                        + measure.getLevel().getCaption());

            }

            for (Hierarchy hierarchy : eachCube.getHierarchies()) {

                System.out.println("hierarchy " + hierarchy.getName());
                NamedList<Level> levels = hierarchy.getLevels();

                for (Level l : levels) {

                    System.out.println(" Hierarchy levels " + l.getName());
                    List<Member> members = l.getMembers();

                    for(Member member:members){
                        System.out.println(" Member name " +member.getName());


                    }

                }
            }

        }

1 个答案:

答案 0 :(得分:0)

您假设支持olap4j连接的架构中有一列。这不是olap4j可以做出的假设。它旨在抽象出这些问题。

传递这类特殊提示的正确方法是annotations。您可以为模式,多维数据集,维度,层次结构和级别添加注释。