如何利用Mondrian4.0构建雪花模型(Snowflake)

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

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

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

这该怎么做?Mondrian4 schema的例子将不胜感激。

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

解决周期

由于角色和资源都来自表格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"/>

DimensionLinks:

<ForeignKeyLink dimension="Role" foreignKeyColumn="resource_id"/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值