如何为缺失/空行补零并修复Power BI累积图表问题?
问题:Power BI累积图表异常,缺失月份补零及累积计算修复
背景与问题
累积图表显示异常,核心原因是部分疾病领域的部分月份无数据行(例如'Neurological'领域缺失10月、2月、3月数据),导致图表出现断裂或空白段。
已尝试操作
- 创建包含所有疾病领域和月份的维度表,与数据表
PISheetforDiseaseArea建立一对多关系 - 制作度量值标记缺失行:
NoRecrt = INT(ISEMPTY(PISheetforDiseaseArea)) - 尝试补零但未生效:
Recrt = IF([NoRecrt] = 1, 0, [Count]) - 当前累积计算度量值
Cumulativebydisease1无法正常处理缺失行:Cumulativebydisease1 = VAR _lastdateinscheduletable = CALCULATE ( MAX ( PISheetforDiseaseArea[ConcatDiseaseMonth] ), REMOVEFILTERS () ) RETURN CALCULATE ( SUM ( PISheetforDiseaseArea[Count] ), FILTER(ALL( PISheetforDiseaseArea), PISheetforDiseaseArea[DiseaseArea] = MAX(PISheetforDiseaseArea[DiseaseArea])&&PISheetforDiseaseArea[ConcatDiseaseMonth]<=MAX(PISheetforDiseaseArea[ConcatDiseaseMonth]) && MIN(PISheetforDiseaseArea[ConcatDiseaseMonth]) <= _lastdateinscheduletable )
需求
实现缺失月份自动补零,同时让累积计算度量值正常覆盖所有疾病-月份组合。
解决方案
步骤1:修复补零度量值
原Recrt依赖的[Count]在空行上下文会返回空白,直接用SUM聚合并判断空值即可,无需依赖NoRecrt:
Recrt = VAR CurrentCount = SUM(PISheetforDiseaseArea[Count]) RETURN IF(ISBLANK(CurrentCount), 0, CurrentCount)
步骤2:重构累积计算度量值
原度量值直接过滤事实表,无法识别维度表中的缺失月份。需基于维度表的疾病领域和月份进行计算,确保覆盖所有预设组合:
假设你的维度表名为Dim_DiseaseMonth,包含DiseaseArea和ConcatDiseaseMonth字段,调整后的累积度量值:
Cumulativebydisease_Fixed = VAR CurrentDisease = SELECTEDVALUE(Dim_DiseaseMonth[DiseaseArea]) VAR CurrentMonth = SELECTEDVALUE(Dim_DiseaseMonth[ConcatDiseaseMonth]) -- 筛选当前疾病领域下所有小于等于当前月份的维度组合 VAR AllPriorMonths = FILTER( ALL(Dim_DiseaseMonth), Dim_DiseaseMonth[DiseaseArea] = CurrentDisease && Dim_DiseaseMonth[ConcatDiseaseMonth] <= CurrentMonth ) RETURN CALCULATE( [Recrt], -- 调用修复后的补零度量值 AllPriorMonths )
关键注意事项
- 图表的坐标轴/行必须使用**维度表
Dim_DiseaseMonth**的字段,而非事实表字段,才能显示所有疾病-月份组合 ConcatDiseaseMonth需为可排序格式(如YYYY-MM),确保累积计算的时间顺序正确- 若维度表无
ConcatDiseaseMonth,可通过FORMAT(MonthColumn, "YYYY-MM") & "-" & DiseaseArea生成,或单独维护月份排序字段
内容的提问来源于stack exchange,提问作者Sally Parkes




