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

MDX无法显示数据最新版本问题求助

MDX获取周期内度量的最新版本(含NULL值)

你的问题核心很清晰:当前代码通过filter([...], not isempty(...))把所有度量值为空的版本都过滤掉了,导致tail只能拿到最后一个有值的版本,自然取不到最新的NULL值版本。

要解决这个问题,关键是不要过滤空值版本,直接获取所有版本中的最新那个,不管它的度量值是否为空。下面是修改后的代码,我会给你拆解逻辑:

SCOPE([DIM Version].[VCR BK Version].[All]);
  -- 第一步:定义所有版本的集合,并确保按"最新在前"排序
  -- 请把"VersionNumber"替换成你实际用来判断版本新旧的属性(比如版本日期、版本序号)
  WITH SET [AllVersions] AS 
    Order(
      [DIM Version].[VCR BK Version].[VCR BK Version].Members,
      [DIM Version].[VCR BK Version].CurrentMember.Properties("VersionNumber"),
      BDESC -- 降序排列,确保最新版本在集合最前面
    )
  
  -- 第二步:对每个度量,直接取最新版本的值(无论是否为空)
  [Measures].[MNY_AA_Total] = ([Measures].[MNY_AA_Total], Tail([AllVersions], 1).Item(0));
  [Measures].[MNY_ENCOURS] = ([Measures].[MNY_ENCOURS], Tail([AllVersions], 1).Item(0));
  [Measures].[MNY_Flottement] = ([Measures].[MNY_Flottement], Tail([AllVersions], 1).Item(0));
  [Measures].[MNY_Montant_Cale] = ([Measures].[MNY_Montant_Cale], Tail([AllVersions], 1).Item(0));
  [Measures].[MNY_VARIATION_ENCOURS] = ([Measures].[MNY_VARIATION_ENCOURS], Tail([AllVersions], 1).Item(0));
  [Measures].[V FCT Collecte Count] = ([Measures].[V FCT Collecte Count], Tail([AllVersions], 1).Item(0));
  [Measures].[CONFI_FLUX] = ([Measures].[CONFI_FLUX], Tail([AllVersions], 1).Item(0));
  [Measures].[CONFI_STOCKS] = ([Measures].[CONFI_STOCKS], Tail([AllVersions], 1).Item(0));
  [Measures].[Declarant_Distinct_Count] = ([Measures].[Declarant_Distinct_Count], Tail([AllVersions], 1).Item(0));
  [Measures].[MNY_FLUX_CALCULE] = ([Measures].[MNY_FLUX_CALCULE], Tail([AllVersions], 1).Item(0));
  [Measures].[PART_FLUX_Trimestriel] = ([Measures].[PART_FLUX_Trimestriel], Tail([AllVersions], 1).Item(0));
  [Measures].[PART_STOCKS] = ([Measures].[PART_STOCKS], Tail([AllVersions], 1).Item(0));
END SCOPE;

关键修改说明:

  1. 移除空值过滤:不再用not isempty筛选版本,保留所有版本成员;
  2. 确保版本排序正确:用Order函数指定按版本的"新旧属性"降序排列,保证Tail([AllVersions],1)拿到的是最新版本;
  3. 直接关联最新版本:通过([度量], 最新版本成员)的方式,直接取该版本下的度量值,哪怕值为NULL。

如果你的版本维度默认的成员顺序已经是"最新版本在前",那可以简化掉Order部分,直接用:

Tail([DIM Version].[VCR BK Version].[VCR BK Version].Members, 1).Item(0)

这样就能完美实现你要的效果——每个周期内只显示度量的最新版本,无论该版本的值是否为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:15:52