如何在蒙德里安中使用雪花模式?
How to use a Snowflake-Schema in Mondrian?
我有一个事实 table,它有一个 RESOURCE_ID
链接到资源 table。一个资源有一个角色,它自己就是一个资源。
.--FACTTABLE--.
| IDENTIFIER | .--RESOURCE---.
| RESOURCE_ID |----| RESOURCE_ID | .--RESOURCE---.
| ROLE_ID |----| RESOURCE_ID |
| TITLE |
现在我想创建一个包含属性 TITLE
的维度 ROLE
。
如何做到这一点? Mondrian 4 Schema 示例将不胜感激。
我知道 <PhysicalSchema>
有 <Link>
,<DimensionLinks>
有 <ForeignKeyLink>
,但我不知道如何使用他们正确。
好的,我知道怎么做了。
解决循环
由于角色和资源都来自table RESOURCE
,蒙德里安无法处理,进入了一个循环。
我用 RESOURCE
table:
的别名解决了这个问题
<Table name="resource" schema="public" keyColumn="id" alias="role"/>
Link tables
要让 Mondrian 知道哪个资源属于哪个角色,您需要 link 两个 tables。
因此,资源 table 有一个键很重要:
<Table name="resource" schema="public" keyColumn="id"/>
现在您可以link 角色的资源:
<Link target='resource' source='role' foreignKeyColumn='role_id'/>
定义维度
起初令人困惑的是,角色维度需要 table 资源。那是因为事实 table 只知道 RESOURCE_ID
而不知道 ROLE_ID
。但是由于每个资源都 link 对应于它的角色,您可以使用属性来定义特定于角色的字段。
<Dimension name="Role" table="resource" key="ID">
<Attributes>
<Attribute name="ID" keyColumn="id" hasHierarchy="false"/>
<Attribute name="Title" table="role" keyColumn="title"/>
</Attributes>
</Dimension>
使用维度
要使用维度,我们必须使用多维数据集维度中的维度,并且 link 事实 table 的 RESOURCE_ID
到角色维度。
用法:
<Dimension source="Role"/>
维度Links:
<ForeignKeyLink dimension="Role" foreignKeyColumn="resource_id"/>
我有一个事实 table,它有一个 RESOURCE_ID
链接到资源 table。一个资源有一个角色,它自己就是一个资源。
.--FACTTABLE--.
| IDENTIFIER | .--RESOURCE---.
| RESOURCE_ID |----| RESOURCE_ID | .--RESOURCE---.
| ROLE_ID |----| RESOURCE_ID |
| TITLE |
现在我想创建一个包含属性 TITLE
的维度 ROLE
。
如何做到这一点? Mondrian 4 Schema 示例将不胜感激。
我知道 <PhysicalSchema>
有 <Link>
,<DimensionLinks>
有 <ForeignKeyLink>
,但我不知道如何使用他们正确。
好的,我知道怎么做了。
解决循环
由于角色和资源都来自table RESOURCE
,蒙德里安无法处理,进入了一个循环。
我用 RESOURCE
table:
<Table name="resource" schema="public" keyColumn="id" alias="role"/>
Link tables
要让 Mondrian 知道哪个资源属于哪个角色,您需要 link 两个 tables。
因此,资源 table 有一个键很重要:
<Table name="resource" schema="public" keyColumn="id"/>
现在您可以link 角色的资源:
<Link target='resource' source='role' foreignKeyColumn='role_id'/>
定义维度
起初令人困惑的是,角色维度需要 table 资源。那是因为事实 table 只知道 RESOURCE_ID
而不知道 ROLE_ID
。但是由于每个资源都 link 对应于它的角色,您可以使用属性来定义特定于角色的字段。
<Dimension name="Role" table="resource" key="ID">
<Attributes>
<Attribute name="ID" keyColumn="id" hasHierarchy="false"/>
<Attribute name="Title" table="role" keyColumn="title"/>
</Attributes>
</Dimension>
使用维度
要使用维度,我们必须使用多维数据集维度中的维度,并且 link 事实 table 的 RESOURCE_ID
到角色维度。
用法:
<Dimension source="Role"/>
维度Links:
<ForeignKeyLink dimension="Role" foreignKeyColumn="resource_id"/>