两种维度的不同
对于我的理解来说,两种维度只是对父子级别的不同表达方式而已,对称维度适合子级的数量固定的结构,例如时间维度(年-季度-月-周等都是对称的,每一年有固定的4季度,以此类推);而非对称维度就是子级数量不固定的结构特别适用,例如产品维度(有些产品只有大类,有些还细分小类)。
设计对称维度
- 对称维度设计起来很简单,也很符合关系数据的理解。最主要的就是要建一个层次结构,来定义它的层级关系(注意这里的日期维度不一定正确,不要盲目照搬)。
- 如果层次结构定义不了,可以转到【属性关系】里去调整关系,右键那些箭头就可以打开【编辑属性关系】界面了,记住【源属性】是子,【相关属性】是父(其实和类图的箭头差不多,箭头处就是父级)。
非对称维度的设计
非对称维度就已经脱离了传统关系数据的概念了,它也可以叫做父子维度,只要通过非对称维度进行MDX查询,就会自动递归所有后代出来,特别适合自展开的报表设计,但对传统的二维图表展示不一定友好。
- 非对称维度的设计要复杂一点,首先要维度表/视图上设计好结构,如行政区域,area_parent_id的外键是指向自身的area_id。
字段 | 注释 | 键 |
---|---|---|
area_id | 区域ID | pk |
area_name | 区域名 | |
area_parent_id | 父区域ID | fk |
- 要注意分别设置好父与子的属性。
- 先设计主键的属性,即子的属性,要层次不可见。
- 再设计主键的用法为key,以及绑定子的名称。
- 设计父级属性时,要先设计非叶数据隐藏。
- 然后再设计父的用法为Parent,不绑定名称,因为所有的名称都已经跟主键绑好了,而指向主键的外键会告诉父级的名称。
- 先设计主键的属性,即子的属性,要层次不可见。
注意
非对称维度(父子维度)会再查询时自动查出所有当前层级的所有后代,这个地方要注意和传统的区分开来。