如何基于DAX度量值Yearly_Leavers_Result聚合Hours字段?
解决DAX度量值结果聚合问题
错误原因
VALUES()函数仅支持表的物理列,无法直接引用度量值——因为度量值是依赖上下文动态计算的结果,不属于表的固定列。
解决方案
方案1:基于行级粒度(ID)汇总后分组求和
如果数据的行级粒度是ID,可以先计算每个ID对应的类别和Hours,再按类别聚合:
YearlyResultCategories = VAR IDLevelSummary = SUMMARIZE( 'TableName', 'TableName'[ID], "@Category", [Yearly_Leavers_Result], "@IDHours", SUM('TableName'[Hours]) ) RETURN SUMX( GROUPBY(IDLevelSummary, [@Category], "@TotalHours", SUMX(CURRENTGROUP(), [@IDHours])), [@TotalHours] )
方案2:配合辅助表实现动态类别分组(更灵活)
如果需要支持切片器等动态筛选,先创建一个包含所有可能类别的辅助表:
LeaverCategories = DATATABLE( "Category", STRING, { {"Left"}, {"Joined"}, {"Remained"} } )
再创建度量值,匹配辅助表的类别并求和:
TotalHoursByCategory = CALCULATE( SUM('TableName'[Hours]), FILTER( VALUES('TableName'[ID]), [Yearly_Leavers_Result] = SELECTEDVALUE(LeaverCategories[Category]) ) )
使用方法
- 方案1:将新度量值拖到数据透视表的「值」区域,同时将
Yearly_Leavers_Result拖到「行」区域(若数据透视表不允许直接拖度量值到行区域,优先使用方案2) - 方案2:将
LeaverCategories[Category]拖到「行」区域,TotalHoursByCategory拖到「值」区域,即可得到每个类别的总Hours
内容的提问来源于stack exchange,提问作者Gabriel H
相关产品推荐
相关产品推荐

