0

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

我正在尝试的示例代码是

        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());


                    }

                }
            }

        }
4

1 回答 1

0

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

传递此类特殊提示的正确方法是通过注解。您可以向模式、多维数据集、维度、层次结构和级别添加注释。

于 2014-05-09T17:22:19.487 回答