SSAS中扁平化不规则层级的父级度量值汇总最优方案咨询
嘿,针对你在扁平化不规则WBS维度里向上汇总Budget度量的问题,我有几个实用的方案,刚好能避开你之前踩的坑——不用预计算SQL拖慢性能,也不用硬改静态12级层级,还能充分利用你现有的ParentWBSKey字段:
方案1:用SSAS父子层级+MDX DESCENDANTS函数(最优推荐)
首先,你可以在SSAS维度设计里给DimWBS建一个动态父子层级,不用指定固定层数:
- 编辑DimWBS维度,新建一个层级
- 把
DimWBSKey设为键列,ParentWBSKey设为父键列 - 保存并重新处理Cube
建好这个父子层级后,就能用MDX的DESCENDANTS函数轻松实现向上汇总。比如假设父子层级名为[DimWBS].[WBS Hierarchy],可以创建一个计算度量值:
WITH MEMBER [Measures].[Rollup Budget] AS SUM( DESCENDANTS( [DimWBS].[WBS Hierarchy].CurrentMember, [DimWBS].[WBS Hierarchy].Levels([DimWBS].[WBS Hierarchy].LevelCount - 1), SELF_AND_AFTER ), [Measures].[Budget] ) SELECT { [Measures].[Rollup Budget] } ON COLUMNS, { [DimWBS].[SortableWBS].[SortableWBS].MEMBERS } ON ROWS FROM [G2 Summary]
为什么这个方案好?
- 父子层级是动态的,不管你的WBS有3层还是10层都能适配,完全不用硬编码层级数
- SSAS对父子层级有专门的性能优化,比自定义递归函数快得多
- 逻辑清晰,维护成本低,后续WBS结构变化也不用改MDX
方案2:MDX递归自定义函数(无父子层级时备选)
如果暂时不想改维度结构,也可以用递归函数遍历ParentWBSKey的关系,找到当前节点的所有后代:
WITH FUNCTION GetAllDescendants(currentKey AS STRING) AS UNION( { [DimWBS].[DimWBSKey].&[currentKey] }, Generate( Filter( [DimWBS].[DimWBSKey].[DimWBSKey].MEMBERS, [DimWBS].[ParentWBSKey].CurrentMember.MemberValue = currentKey ), GetAllDescendants([DimWBS].[DimWBSKey].CurrentMember.MemberValue) ) ) MEMBER [Measures].[Rollup Budget] AS SUM( GetAllDescendants([DimWBS].[DimWBSKey].CurrentMember.MemberValue), [Measures].[Budget] ) SELECT { [Measures].[Rollup Budget] } ON COLUMNS, { [DimWBS].[SortableWBS].[SortableWBS].MEMBERS } ON ROWS FROM [G2 Summary]
这个函数会递归查找当前节点的所有子节点、孙节点,直到叶子节点,然后把这些节点的Budget加总。不过要注意,如果你的WBS数据量很大,递归函数的性能可能不如父子层级,但肯定比预计算SQL要好——毕竟是在查询时利用SSAS缓存动态计算,而不是每次刷新都全量计算。
额外优化提示
- 如果你的Cube是Tabular模型(而非Multidimensional),可以用DAX更简洁地实现:
Rollup Budget = VAR CurrentWBSPath = [SortableWBS] RETURN SUMX( FILTER( DimWBS, LEFT(DimWBS[SortableWBS], LEN(CurrentWBSPath)) = CurrentWBSPath && (RIGHT(DimWBS[SortableWBS], 1) = "." || LEN(DimWBS[SortableWBS]) = LEN(CurrentWBSPath)) ), RELATED(FactBudget[Budget]) ) - 尽量避免预计算SQL的原因:每次数据刷新都要遍历所有层级重新计算,不仅耗时,还会增加Cube的存储体积;而SSAS的动态汇总可以复用缓存,用户查询不同层级时效率更高。
内容的提问来源于stack exchange,提问作者Byron Roland
相关产品推荐
相关产品推荐

