Power BI平均值度量问题:如何保留计数为0的时段?
找回Power BI中计数为0的半小时时段平均值解决方案
当前你的度量值仅在datasetInput存在对应记录时才计算平均值,导致无数据(计数为0)的半小时时段被自动过滤。要保留所有时段,核心是引入独立的半小时粒度时间维度表,确保每个时段都有上下文,具体操作如下:
1. 创建半小时时间维度表
用DAX生成包含全年所有半小时时间点的维度表,替换代码中的年份范围为你的业务时间范围:
TimeDim = ADDCOLUMNS ( GENERATE ( CALENDAR (DATE(2023,1,1), DATE(2023,12,31)), -- 替换为目标年份的起止日期 GENERATESERIES (TIME(0,0,0), TIME(23,30,0), TIME(0,30,0)) ), "DateTime", [Date] + [Value], "HourHalf", FORMAT([Date] + [Value], "HH:mm") -- 用于标识半小时时段,如"00:00"、"00:30" )
2. 建立表关系
在Power BI模型视图中,将TimeDim[DateTime]与datasetInput中记录半小时时间的字段建立一对多关系(默认关系方向即可)。
3. 修改度量值
调整原度量值,适配维度表的上下文,同时处理无数据场景:
averageValue = VAR TotalSum = SUM('datasetInput'[averageTraceForecast]) VAR ValidCount = CALCULATE ( COUNT('datasetInput'[averageTraceForecast]), 'datasetInput'[averageTraceForecast] < 0.0 -- 保留原有的过滤条件 ) RETURN IF(ISBLANK(TotalSum), 0, DIVIDE(TotalSum, ValidCount, 0))
- 用
DIVIDE函数避免除数为0的错误,同时指定无有效计数时返回0 - 当某时段无数据时,
TotalSum为空,直接返回0以保留该时段
4. 配置可视化
在图表(如矩阵、折线图)中,使用TimeDim[HourHalf]或TimeDim[DateTime]作为轴/行字段,而非datasetInput中的时间字段,此时所有半小时时段都会显示,包括计数为0的时段。
内容的提问来源于stack exchange,提问作者mhooper
相关产品推荐
相关产品推荐

