mondrian中的多个层次结构表示找不到层次结构



我在mondrian模式中有以下Dimension。蒙德里安谈建立联系称

mondrian.olap.MondrianException:mondrian错误:内部错误:找不到层次结构"[Product]"

<Dimension name="Product" foreignKey="item_id">
    <Hierarchy hasAll="true" primaryKey="item_code" primaryKeyTable="m_item_master">
        <Join leftKey="item_code" rightKey="item_code">
            <Table name="m_item_master"/> <!--dummy_master--> <!--m_item_master-->
            <Table name="m_item_relation"/>
        </Join>
        <Level name="Department" table="m_item_relation" column="department"/>
        <Level name="Class" table="m_item_relation" column="category"/>
        <Level name="Item" table="m_item_master" column="item_code" ordinalColumn="item_code" nameColumn="name" uniqueMembers="true" type="Numeric"/>
    </Hierarchy>
    <Hierarchy name="Base Item" hasAll="false" primaryKey="item_code" primaryKeyTable="m_item_master">
        <Join leftKey="item_code" rightKey="item_code">
            <Table name="m_item_master"/> <!--dummy_master--> <!--m_item_master-->
            <Table name="m_item_relation"/>
        </Join>
        <Level name="Department" table="m_item_relation" column="department" captionColumn="department"/>
        <Level name="Item" table="m_item_master" column="item_code" ordinalColumn="item_code" nameColumn="name" uniqueMembers="true" captionColumn="name" type="Numeric"/>
        <Property name="Price" table="m_item_master" column="price" />
    </Hierarchy>
</Dimension>

我使用的是Mondrian-4.0-SNAPSHOT版本,也尝试了最新的Mondrian 4.2.0.0-204版本。

注:此外,我在mondrian连接创建过程中收到了这个错误。因此,它不关心传递给它的任何MDX查询。

好的。这就是我发现的错误。为了澄清,Mondrian确实支持多层次结构,但对于上述模式,我们似乎对相关角色有不同的问题。

<Role name="myrole">
    <SchemaGrant access="none">
        <CubeGrant cube="Transaction" access="all">
            <HierarchyGrant hierarchy="[Product]" access="custom" rollupPolicy="partial">
                <MemberGrant member="[Product].[Cottage Foods]" access="all"/>
                <MemberGrant member="[Product].[Vegetables]" access="all"/>
                ....
            </HierarchyGrant>
            ....
        </CubeGrant>
    </SchemaGrant>
</Role>

在上面的角色中,尽管默认层次结构采用mondrian中维度的名称,但如果维度中有多个层次结构,我们必须在角色中将其指定为[dimension.hierarchy],而不仅仅是层次结构名称。在我们的情况下,应该如下所示。

<Role name="myrole">
    <SchemaGrant access="none">
        <CubeGrant cube="Transaction" access="all">
            <HierarchyGrant hierarchy="[Product.Product]" access="custom" rollupPolicy="partial">
                <MemberGrant member="[Product.Product].[Cottage Foods]" access="all"/>
                <MemberGrant member="[Product.Product].[Vegetables]" access="all"/>
                ....
            </HierarchyGrant>
            ....
        </CubeGrant>
    </SchemaGrant>
</Role>

这解决了上述问题。

最新更新