在mondrian XML模式上添加闭包表后出现NullPointerException

时间:2015-04-09 15:05:42

标签: java pentaho olap mondrian

XML定义:

<PhysicalSchema>
        <Table name='space_dimension'>
            <Key>
                <Column name='space_id'/>
            </Key>
            <ColumnDefs>
                <ColumnDef name='space_id' type='Integer'/>
                <ColumnDef name='parent_space_id' type='Integer'/>
            </ColumnDefs>
        </Table>
        <Table name='space_hierarchy_bridge'>
            <Key>
                <Column name='space_id'/>
            </Key>
            <ColumnDefs>
                <ColumnDef name='space_id' type='Integer'/>
                <ColumnDef name='parent_space_id' type='Integer'/>
                <ColumnDef name='levels_from_top' type='Integer'/>
            </ColumnDefs>
        </Table>
        <Link source='space_dimension' target='space_hierarchy_bridge'>
            <ForeignKey>
                <Column name='space_id'/>
            </ForeignKey>
        </Link>
</PhysicalSchema>

<Dimension name='Space' table='space_dimension' key='Space Id'>
    <Attributes>
        <Attribute name='Parent Space Id' keyColumn='parent_space_id'/>
        <Attribute name='Space Id' keyColumn='space_id'/>
    </Attributes>
    <Hierarchies>
        <Hierarchy name='Space' primaryKey="space_id">
                <Level attribute='Parent Space Id'/>
                <Level attribute='Space Name' parentAttribute='Parent Space Id' nullParentValue='0'>
                    <Closure table='space_hierarchy_bridge' parentColumn='parent_space_id' childColumn='space_id' distanceColumn='levels_from_top'/>
                </Level>
        </Hierarchy>
    </Hierarchies>
</Dimension>

SQL定义:

CREATE TABLE space_dimension(
    parent_space_id BIGINT NOT NULL,
    space_id BIGINT NOT NULL,
    CONSTRAINT pk_space_dimension PRIMARY KEY (space_id)
);

CREATE TABLE space_hierarchy_bridge(
parent_space_id BIGINT NOT NULL,
space_id BIGINT NOT NULL,
levels_from_top INT NOT NULL,
FOREIGN KEY (space_id) REFERENCES space_dimension (space_id)
);

我加载mondrian库时会出现错误:

java.lang.NullPointerException 
    at mondrian.rolap.RolapSchema$PhysPathBuilder.(RolapSchema.java:2554) at mondrian.rolap.RolapSchemaLoader.registerExpr (RolapSchemaLoader.java:2219) 
    at mondrian.rolap.RolapSchemaLoader.registerAttribute (RolapSchemaLoader.java:2165)
    at mondrian.rolap.RolapSchemaLoader.registerLevel (RolapSchemaLoader.java:2150)
    at mondrian.rolap.RolapSchemaLoader.registerHierarchy (RolapSchemaLoader.java:2139)
    at mondrian.rolap.RolapSchemaLoader.registerDimension (RolapSchemaLoader.java:2127)
    at mondrian.rolap.RolapSchemaLoader.createCube (RolapSchemaLoader.java:1907)
    at mondrian.rolap.RolapSchemaLoader.sharedDimension (RolapSchemaLoader.java:3062)
    at mondrian.rolap.RolapSchemaLoader.access$500 (RolapSchemaLoader.java:62)
    at mondrian.rolap.RolapSchemaLoader$5.apply (RolapSchemaLoader.java:2731)
    at mondrian.rolap.RolapSchemaLoader.loadStage2 (RolapSchemaLoader.java:426)
    at mondrian.rolap.RolapSchemaLoader.loadStage1 (RolapSchemaLoader.java:336)
    at mondrian.rolap.RolapSchemaLoader.loadStage0 (RolapSchemaLoader.java:272)
    at mondrian.rolap.RolapSchemaLoader.createSchema (RolapSchemaLoader.java:4303)
    at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:210)
    at mondrian.rolap.RolapSchemaPool.get(RolapSchemaPool.java:62)
    at mondrian.rolap.RolapConnection.(RolapConnection.java:160)
    at mondrian.rolap.RolapConnection.(RolapConnection.java:84)
    at mondrian.olap.DriverManager.getConnection(DriverManager.java:112)
    at mondrian.olap.DriverManager.getConnection(DriverManager.java:68)
    at mondrian.olap4j.MondrianOlap4jConnection.(MondrianOlap4jConnection.java:153)
    at mondrian.olap4j.FactoryJdbc4Plus$AbstractConnection.(FactoryJdbc4Plus.java:323)
    at mondrian.olap4j.FactoryJdbc41Impl$MondrianOlap4jConnectionJdbc41.(FactoryJdbc41Impl.java:118)
    at mondrian.olap4j.FactoryJdbc41Impl.newConnection(FactoryJdbc41Impl.java:32)
    at mondrian.olap4j.MondrianOlap4jDriver.connect(MondrianOlap4jDriver.java:139)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at energydw.olap.application.Application.init(Application.java:148)

在添加闭包表定义之前,一切正常。

这个问题有解决方法吗?

更新:

库正在创建事实,维度和表之间的所有关系(包括事实表和闭包表之间的关系),但它不会在空间维度和闭包表之间创建关系......

0 个答案:

没有答案