【问题标题】:How to use a Snowflake-Schema in Mondrian?如何在蒙德里安使用雪花模式?
【发布时间】:2016-11-22 04:06:46
【问题描述】:

我有一个事实表,其中有一个链接到资源表的RESOURCE_ID。资源有一个角色,它本身就是一个资源。

.--FACTTABLE--.  
| IDENTIFIER  |    .--RESOURCE---.
| RESOURCE_ID |----| RESOURCE_ID |    .--RESOURCE---.
                   | ROLE_ID     |----| RESOURCE_ID |
                                      | TITLE       |

现在我想创建一个包含属性TITLE 的维度ROLE

如何做到这一点? Mondrian 4 Schema 示例将不胜感激。

我知道<PhysicalSchema> 有一个<Link><DimensionLinks> 有一个<ForeignKeyLink>,但我不知道如何正确使用它们。

【问题讨论】:

    标签: schema olap dimension mondrian snowflake-schema


    【解决方案1】:

    好的,我知道怎么做。


    解决循环

    由于角色和资源都来自表RESOURCE,蒙德里安无法处理并进入循环。

    我用RESOURCE 表的别名解决了这个问题:

    <Table name="resource" schema="public" keyColumn="id" alias="role"/>
    

    链接表

    要让 Mondrian 知道哪个资源属于哪个角色,您需要链接两个表。

    因此,资源表有一个键很重要:

    <Table name="resource" schema="public" keyColumn="id"/>
    

    现在您可以将资源链接到它的角色:

    <Link target='resource' source='role' foreignKeyColumn='role_id'/>
    

    定义维度

    首先令人困惑的是,角色维度需要表资源。这是因为事实表只知道RESOURCE_ID 而不是ROLE_ID。但是由于每个资源都链接到它的角色,您可以使用属性来定义角色特定的字段。

    <Dimension name="Role" table="resource" key="ID">
        <Attributes>
            <Attribute name="ID" keyColumn="id" hasHierarchy="false"/>
            <Attribute name="Title" table="role" keyColumn="title"/>
        </Attributes>
    </Dimension>
    

    使用维度

    要使用维度,我们必须使用多维数据集维度中的维度并将事实表的RESOURCE_ID 链接到角色维度。

    用途:

    <Dimension source="Role"/>
    

    维度链接:

    <ForeignKeyLink dimension="Role" foreignKeyColumn="resource_id"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多