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;
关键修改说明:
- 移除空值过滤:不再用
not isempty筛选版本,保留所有版本成员; - 确保版本排序正确:用
Order函数指定按版本的"新旧属性"降序排列,保证Tail([AllVersions],1)拿到的是最新版本; - 直接关联最新版本:通过
([度量], 最新版本成员)的方式,直接取该版本下的度量值,哪怕值为NULL。
如果你的版本维度默认的成员顺序已经是"最新版本在前",那可以简化掉Order部分,直接用:
Tail([DIM Version].[VCR BK Version].[VCR BK Version].Members, 1).Item(0)
这样就能完美实现你要的效果——每个周期内只显示度量的最新版本,无论该版本的值是否为空。
内容的提问来源于stack exchange,提问作者Reda Maachi
相关产品推荐
相关产品推荐

