You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSAS中将MDX维度成员作为度量值展示

解决MDX透视表添加各层级项目状态度量的方案

刚接触MDX就能用到Scope和层次结构,已经很不错啦!针对你要给每个层级(Feature_Parent、Feature、User Story)添加状态度量列的需求,我分两种常见场景给你提供解决方案:

场景1:状态是维度属性(存储在维度表中)

如果你的项目状态是维度层级成员的属性(比如每个Feature_Parent、Feature、User Story在维度里都有对应的Status属性),可以通过创建计算度量来提取每个层级的状态值:

WITH 
  -- 提取Feature Parent层级的状态
  MEMBER [Measures].[Feature Parent Status] AS 
    IIF(
      NOT IsEmpty([Project Hierarchy].[Feature Parent].CurrentMember),
      [Project Hierarchy].[Feature Parent].CurrentMember.Properties("Status"),
      NULL
    )
  -- 提取Feature层级的状态
  MEMBER [Measures].[Feature Status] AS 
    IIF(
      NOT IsEmpty([Project Hierarchy].[Feature].CurrentMember),
      [Project Hierarchy].[Feature].CurrentMember.Properties("Status"),
      NULL
    )
  -- 提取User Story层级的状态
  MEMBER [Measures].[User Story Status] AS 
    IIF(
      NOT IsEmpty([Project Hierarchy].[User Story].CurrentMember),
      [Project Hierarchy].[User Story].CurrentMember.Properties("Status"),
      NULL
    )
SELECT 
  -- 将状态度量和你原有的数值度量一起放在列轴
  {
    [Measures].[Feature Parent Status],
    [Measures].[Feature Status],
    [Measures].[User Story Status],
    [Measures].[Your Existing Numeric Measure] -- 替换成你已有的数值度量
  } ON COLUMNS,
  -- 行轴用你的层次结构成员
  NON EMPTY [Project Hierarchy].[Full Hierarchy].Members ON ROWS
FROM [Your Cube Name] -- 替换成你的立方体名称

关键说明:

  • 把[Project Hierarchy]换成你实际的维度名称,[Full Hierarchy]换成你创建的用户层次结构名称。
  • Properties("Status")里的Status要和维度属性的名称完全一致(可以在SSAS维度设计器里查看属性的“名称”字段)。
  • 用IIF判断当前成员是否为空,避免在高层级显示无意义的状态值。

场景2:状态是事实表中的度量(需聚合父层级状态)

如果状态是事实表中的字段(比如每个User Story有单独的状态记录,父层级的状态需要通过子项聚合得到),你需要用Scope语句定义聚合逻辑,比如:

-- 先创建基础状态度量(从事实表取User Story的状态)
WITH 
  MEMBER [Measures].[User Story Status] AS [Measures].[Status From Fact Table]
  -- 定义Feature层级的状态聚合逻辑(示例:子项全完成则父项完成,否则进行中)
  MEMBER [Measures].[Feature Status] AS NULL
  -- 定义Feature Parent层级的状态聚合逻辑
  MEMBER [Measures].[Feature Parent Status] AS NULL
SELECT 
  {
    [Measures].[Feature Parent Status],
    [Measures].[Feature Status],
    [Measures].[User Story Status],
    [Measures].[Your Existing Numeric Measure]
  } ON COLUMNS,
  NON EMPTY [Project Hierarchy].[Full Hierarchy].Members ON ROWS
FROM [Your Cube Name]
-- 用Scope设置父层级的状态计算逻辑
SCOPE ([Project Hierarchy].[Feature].Members, [Measures].[Feature Status]);
  THIS = 
    CASE 
      -- 统计未完成的子User Story数量,为0则标记完成
      WHEN Count(Filter([Project Hierarchy].[User Story].CurrentMember.Children, [Measures].[User Story Status] <> "Completed")) = 0
      THEN "Completed"
      ELSE "In Progress"
    END;
END SCOPE;

SCOPE ([Project Hierarchy].[Feature Parent].Members, [Measures].[Feature Parent Status]);
  THIS = 
    CASE 
      WHEN Count(Filter([Project Hierarchy].[Feature].CurrentMember.Children, [Measures].[Feature Status] <> "Completed")) = 0
      THEN "Completed"
      ELSE "In Progress"
    END;
END SCOPE;

自定义聚合逻辑提示:

如果你的状态有优先级(比如用数值映射:1=待办,2=进行中,3=完成),可以用Max或Min来聚合,比如:

THIS = Max([Project Hierarchy].[Feature].CurrentMember.Children, [Measures].[Status Numeric Value])

然后再把数值转成对应的状态文本即可。

和你现有Scope透视表结合

如果已经有基于Scope的透视表,只需要把上面的计算度量加入到SELECT的列轴集合中,或者把Scope语句合并到你现有的MDX脚本里就行。

内容的提问来源于stack exchange,提问作者Lena Meer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:29:41