DAX计算月度频率:实现SubGroup统计后Group级正确汇总
解决SSAS中Group维度下SubGroup月度频率求和的DAX问题
需求说明
在SSAS关联的Excel透视表选定周期内,统计FACTS表中每个SubGroupId至少存在1条记录的月份数量(月度频率);当筛选到Group维度层级时,结果需为该Group下所有SubGroup月度频率的总和,而非Group关联的去重月份总数。
数据结构
- 维度表(Dim):包含
ID、SubGroupId、Group字段 - 事实表(Facts):包含
RowId、DimId、Date字段(关联Calendar表的YYYYMMKey字段用于月份统计)
原度量问题
现有DAX度量在SubGroup维度下计算结果正确,但切换到Group维度时,仅返回Group关联的去重月份数,无法实现SubGroup月度频率的求和:
CALCULATE( DISTINCTCOUNT('Calendar'[YYYYMMKey]) , 'Facts' , 'Facts'[DimId] <> 0) )
修改后的DAX度量
SubGroup月度频率总和 = SUMX( VALUES(Dim[SubGroupId]), CALCULATE( DISTINCTCOUNT('Calendar'[YYYYMMKey]), 'Facts', 'Facts'[DimId] <> 0 ) )
逻辑说明
VALUES(Dim[SubGroupId]):获取当前筛选上下文下的所有SubGroupId列表——当筛选Group时,自动返回该Group下的全部SubGroupId;当筛选SubGroup时,仅返回当前SubGroupIdSUMX:迭代每个SubGroupId,对每个SubGroup执行内部的CALCULATE计算其月度频率,最终将所有SubGroup的结果求和- 内部
CALCULATE保留原有逻辑,确保单个SubGroup的月度频率计算准确
内容的提问来源于stack exchange,提问作者Andrey Naydenov
相关产品推荐
相关产品推荐

