SSAS多维立方体需做哪些修改,支持Power BI矩阵度量值切换显示?
在SSAS多维立方体中实现Power BI度量值切换的具体操作步骤
要解决Power BI实时连接SSAS多维模型时无法切换度量值的问题,得在SSAS里做两个核心修改:建一个专门选度量值的维度,再做一个动态计算成员来匹配选择。
1. 新建“度量值选择”维度
- 在SSAS的数据源视图里,加一张维度表(可以用SQL生成或者建临时表),表里至少两列:
度量值ID(唯一标识)和度量值名称(给用户看的名字),示例数据如下:度量值ID 度量值名称 1 销售总额 2 订单数量 3 平均客单价 - 把这张表加到数据源视图后,用维度设计器建个新维度,把
度量值ID设为键属性,度量值名称设为显示名称,维度类型选“常规”,不用和事实表关联(这是个独立的选择维度)。
2. 创建动态计算度量值
- 打开立方体设计器的“计算”标签,新建一个计算成员(比如叫
动态显示度量值),用MDX的CASE语句根据“度量值选择”维度的当前选项返回对应的实际度量值,示例代码:CREATE MEMBER CURRENTCUBE.[Measures].[动态显示度量值] AS CASE WHEN [度量值选择].[度量值ID].CurrentMember.MemberValue = 1 THEN [Measures].[销售总额] WHEN [度量值选择].[度量值ID].CurrentMember.MemberValue = 2 THEN [Measures].[订单数量] WHEN [度量值选择].[度量值ID].CurrentMember.MemberValue = 3 THEN [Measures].[平均客单价] ELSE NULL END, FORMAT_STRING = CASE WHEN [度量值选择].[度量值ID].CurrentMember.MemberValue = 1 THEN "Currency" WHEN [度量值选择].[度量值ID].CurrentMember.MemberValue = 2 THEN "#,0" WHEN [度量值选择].[度量值ID].CurrentMember.MemberValue = 3 THEN "Currency" ELSE "" END; - 注意:把代码里的维度、度量值名称换成你模型里的真实名称,还要根据每个度量值的格式需求调整
FORMAT_STRING,保证显示的格式正确。
3. 部署后在Power BI里配置
- 把修改后的SSAS立方体部署上去,刷新Power BI的实时连接。
- 在Power BI报表里,把新建的“度量值选择”维度的
度量值名称拖到切片器,再把动态显示度量值放到矩阵的值区域。 - 现在用户选切片器里的不同度量值名称,矩阵就会自动切换显示对应的度量值了。
如果需要支持多选的话,可以调整MDX逻辑,但一般单选场景用上面的方法就够了。
内容的提问来源于stack exchange,提问作者Fernando Vega
相关产品推荐
相关产品推荐

