调整Power BI度量:统计All_OOS_AD表A-D类数据并控制0值范围
Power BI度量调整解决方案
需求1:扩展类别统计范围并补全日期-类别组合的0值
原度量Total OOS A (NS)仅统计Item Category为"A"的条目,需修改为覆盖类别A-D,且对All_OOS_AD表中已存在的日期,无对应类别的数据时返回0。
解决方案DAX代码
Total OOS A-D (NS) = VAR CategoryList = {"A", "B", "C", "D"} VAR DateCategoryCombination = CROSSJOIN( VALUES(All_OOS_AD[Date]), SELECTCOLUMNS(CategoryList, "Item Category", [Value]) ) RETURN SUMX( DateCategoryCombination, CALCULATE( COALESCE(SUM(All_OOS_AD[OOS Value]), 0), All_OOS_AD[Item Category] = [Item Category], All_OOS_AD[Date] = [Date] ) )
逻辑说明
- 用
CategoryList定义需统计的类别范围(A-D) - 通过
CROSSJOIN生成All_OOS_AD表中所有日期与A-D类别的完整组合 SUMX遍历每个组合,用CALCULATE计算对应类别的OOS值,COALESCE确保无数据时返回0
需求2:限制仅All_OOS_AD表内日期返回0,其他日期返回空
当前度量Total OOS A-D/Date (NS) T1 *NB*对主DATE表中不在All_OOS_AD的日期返回0,需调整为仅All_OOS_AD内的日期无数据时返回0,其余日期不返回值(显示为空)。
解决方案DAX代码
Total OOS A-D/Date (NS) T1 *NB* = VAR IsDateInOOS = NOT(ISEMPTY(RELATEDTABLE(All_OOS_AD))) RETURN IF( IsDateInOOS, COALESCE( -- 替换为你原度量的核心计算逻辑,例如:SUM(All_OOS_AD[OOS Value]) SUM(All_OOS_AD[OOS Value]), 0 ), BLANK() )
逻辑说明
IsDateInOOS判断当前上下文的日期是否存在于All_OOS_AD表中- 仅当日期在
All_OOS_AD内时,计算度量值并在无数据时返回0;不在的话返回BLANK(),报表中不会显示无效日期的0值
内容的提问来源于stack exchange,提问作者Cristina
相关产品推荐
相关产品推荐

