Power BI中实现上一次有效出勤数据展示的计算列问询
解决方案:Power BI中获取上一次非0出勤数据的DAX计算列
问题分析
你的原DAX代码仅取当前日期前一天的出勤数据,未考虑前一天可能是场馆关闭(值为0)的情况;之前的优化建议未正确筛选出最近的非0出勤日期,导致返回错误数据(如13/01/24的结果偏差)。
正确DAX计算列代码
PreviousAttendance = VAR CurrentDate = 'Date'[Date] VAR CurrentAttendance = 'Date'[Attendance] -- 筛选当前日期之前所有出勤不为0的记录 VAR NonZeroHistory = FILTER(ALL('Date'), 'Date'[Date] < CurrentDate && 'Date'[Attendance] <> 0) -- 找到最近的非0出勤日期 VAR LatestValidDate = MAXX(NonZeroHistory, 'Date'[Date]) RETURN IF( CurrentAttendance = 0, "Site Closed", -- 获取最近非0日期对应的出勤数据 CALCULATE(MAX('Date'[Attendance]), 'Date'[Date] = LatestValidDate) )
代码逻辑说明
- 定义变量:先存储当前行的日期和出勤值,简化后续逻辑编写。
- 筛选有效历史记录:从全表中过滤出当前日期之前、出勤不为0的所有行,排除场馆关闭的日期。
- 定位最近有效日期:用
MAXX找出筛选结果中最新的日期,确保取到的是上一次比赛日的记录。 - 返回结果:如果当前行出勤为0,直接返回"Site Closed";否则根据最近有效日期取出对应出勤数据。
注意事项
- 确保
'Date'[Date]列是标准日期类型,且无重复日期(若有重复,MAX('Date'[Attendance])会取该日期的最大出勤值,可根据需求替换为SUM或MIN)。 - 若你的日期表包含时间部分,需确保
'Date'[Date]仅保留日期维度,避免时间干扰筛选逻辑。
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

