1

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

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

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

这个怎么做?Mondrian 4 Schema 的示例将不胜感激。

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

4

1 回答 1

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"/>
于 2016-07-19T14:28:43.427 回答