Mondrian系列(五)-深入维度、层次和级别(1)-映射维度和层次

1.映射维度和层次

维度和cube的联系通过有意义的列来连接,一个列在事实表中,另一个列在维表中。<dimension>元素有属性foreignKey属性,是在事实表中的列的名字,<hierarchy>元素有primaryKey属性。</hierarchy></dimension>

如果层次有多个表,可以使用primaryKeyTable属性指定。

column属性定义了level的key。例子如下:

<dimension name="”Gender”" foreignkey="”customer_id”"><br><hierarchy hasall="”true”" primarykey="”customer_id”"><br><table name="”customer”/"> <br><level name="”Gender”" column="”gender”" uniquemember="”true”"><br><keyexpression><br><sql dialect="”generic”">customer.gender</sql><br></keyexpression><br></level><br><br> </table> <p></p> <table border="1" cellspacing="0" cellpadding="2" width="599"><tbody> <tr> <td width="150"> <p align="center">父元素</p> </td> <td width="149"> <p align="center">属性</p> </td> <td width="149"> <p align="center">等效嵌套元素</p> </td> <td width="149" align="center"> <p align="center">描述</p> </td> </tr> <tr> <td width="150"><level></level></td> <td width="149">列</td> <td width="149"><keyexpression></keyexpression></td> <td width="149">level的key</td> </tr> <tr> <td width="150"><level></level></td> <td width="149">成员列</td> <td width="149"><nameexpression></nameexpression></td> <td width="149">定义此level的成员名称的表达式,如果不指定,使用leve的key</td> </tr> <tr> <td width="150"><level></level></td> <td width="149">排序列</td> <td width="149"><ordinalexpression></ordinalexpression></td> <td width="149">定义成员顺序的表达式,如果不指定,使用level的key</td> </tr> <tr> <td width="150"><level></level></td> <td width="149">说明列</td> <td width="149"><captionexpression></captionexpression></td> <td width="149">格式化成员说明信息的表达式,如果不指定,使用level的name</td> </tr> <tr> <td width="150"><level></level></td> <td width="149">父列</td> <td width="149"><parentexpression></parentexpression></td> <td width="149">在父子层次中,表示子成员和父成员关系的表达式</td> </tr> <tr> <td width="150"><measure></measure></td> <td width="149">列</td> <td width="149"><measureexpression></measureexpression></td> <td width="149">计算度量值的SQL表达式(到SQL聚合函数的参数)</td> </tr> <tr> <td width="150"><property></property></td> <td width="149">列</td> <td width="149"><propertyexpression></propertyexpression></td> <td width="149">计算属性值的SQL表达式</td> </tr> </tbody></table> <p></p> <p>1.1.关于uniqueMembers的设置</p> <p>uniqueMembers属性用于优化SQL生成。如果你已经知道在维表中level列的值在这个层次的父级是唯一的,可以设置uniqueMembers=”true”,否则设置为"false”。例如时间维[Year].[Month]在[Month]这个level,应该设置uniqueMembers=”false”,因为同样的月可以出现在不同的年。在另一方面,假设有[Product Class].[Product Name]层次,你可以确保[Product Name]是唯一的,就可以设置uniqueMembers=”true”。如果并不能确定,则先设置为false。一般在最顶级,经常是设置为true,因为没有父层次。</p> <p>1.2.highCardinality属性</p> <p>这个属性通常用于告诉Mondiran在这个维度中有未定义的和大量的值,可以设置为true或false(默认)。当这个属性设置为真时,对整个维度数据全覆盖的活动不会执行。</p></hierarchy></dimension>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值