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

如何在MDX计算度量中获取子查询(MDX+ FILTERBY)定义的时间成员?

在计算度量中获取MDX子查询或FILTERBY定义的时间成员

嘿,我来帮你解决这个问题——要在计算度量[ist]里拿到子查询或者FILTERBY指定的时间成员,其实有很直接的实现方式,我分两种场景给你说明:

1. 针对子查询(Subselect)的情况

你的子查询已经把时间维度限定在了[Time].[Time].[month].&[2018-04-01],这个筛选会直接影响整个查询的上下文。在计算度量里,你可以通过[Time].[Time].CurrentMember直接获取这个被限定的时间成员,然后把它传给你的自定义函数__get_time_member__就行。

修改后的MDX语句示例:

WITH MEMBER [Measures].[ist] AS 
  // 将当前上下文的时间成员传入自定义函数
  __get_time_member__([Time].[Time].CurrentMember)
SELECT 
  // 度量轴
  {[Measures].[ist],[Measures].[soll]} ON 0,
  // 行轴(子查询已限定时间,只会返回目标月份)
  [Time].[Time].[month].Members ON 1
FROM ( 
  SELECT [Time].[Time].[month].&[2018-04-01] ON 0 
  FROM [Finance] 
)

如果需要获取该时间成员的具体属性(比如键、名称),可以用[Time].[Time].CurrentMember.Member_Key、[Time].[Time].CurrentMember.Member_Caption这类属性来实现。

2. 针对MDX+的FILTERBY情况

MDX+的FILTERBY语法本质上和子查询的上下文限定逻辑一致,同样可以利用[Time].[Time].CurrentMember来获取被筛选的时间成员,实现起来更简洁:

WITH MEMBER [Measures].[ist] AS 
  __get_time_member__([Time].[Time].CurrentMember)
SELECT 
  {[Measures].[ist],[Measures].[soll]} ON 0,
  [Time].[Time].[month].Members ON 1
FROM [Finance]
FILTERBY [Time].[Time].[month].&[2018-04-01]

补充说明

如果你的筛选条件是多个时间成员(比如选了多个月份),可以用Generate或者SetToStr来处理时间成员集合,但针对你当前单个成员的场景,CurrentMember完全够用,是最直接的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:21:31