如何在SSAS Tabular Cube中创建含多维度属性的虚拟维度文件夹
在SSAS Tabular Cube中实现跨维度属性的虚拟文件夹分组
方法一:通过显示文件夹直接分组(最简方案)
这是无需额外数据计算的UI层分组方式,完全满足终端用户"同一文件夹展示"的需求:
- 打开SSAS Tabular模型项目,找到对应维度表(Dimension A、B、C)
- 逐个选中目标属性(A1、A2、B3、C2、C4),在右侧属性窗口中找到Display Folder(显示文件夹)选项
- 给所有目标属性设置同一个显示文件夹名称,比如
虚拟整合维度 - 部署模型到SSAS服务器,终端用户在Excel/Power BI等工具中连接Cube时,这些属性会自动归到同一文件夹下,呈现出虚拟维度的效果
方法二:创建计算维度(独立维度实体)
如果需要将这些属性作为一个独立的维度对象使用(而非仅UI分组),可以通过计算表实现:
- 在Tabular模型中新建计算表,命名为
虚拟整合维度 - 编写DAX表达式整合目标属性,需根据业务逻辑选择关联方式:
- 若属性间无业务关联,仅需全组合:
虚拟整合维度 = SELECTCOLUMNS ( CROSSJOIN ( SELECTCOLUMNS('Dimension A', "A1", 'Dimension A'[A1], "A2", 'Dimension A'[A2]), SELECTCOLUMNS('Dimension B', "B3", 'Dimension B'[B3]), SELECTCOLUMNS('Dimension C', "C2", 'Dimension C'[C2], "C4", 'Dimension C'[C4]) ), "A1", [A1], "A2", [A2], "B3", [B3], "C2", [C2], "C4", [C4] ) - 若属性间存在业务关联,需用
NATURALINNERJOIN替代CROSSJOIN避免笛卡尔积
- 若属性间无业务关联,仅需全组合:
- 为计算表配置与事实表的关联关系(可通过原维度表间接关联)
- 部署模型后,该计算表会作为独立维度出现在客户端工具中
注意事项
- 方法一无性能损耗,仅调整展示逻辑,适合仅需分组展示的场景
- 方法二需注意数据量控制,笛卡尔积会生成大量冗余数据,仅适合属性值较少的场景
- 客户端工具需刷新字段列表才能看到修改后的显示文件夹或新维度
内容的提问来源于stack exchange,提问作者Ricardo Castro
相关产品推荐
相关产品推荐

