Power BI Calculated Measure需求:基于calendar slicer结束日期计算Sales均值
Power BI 计算度量值实现方案
前提准备
确保你已创建**日期表(Calendar Table)**并与销售表(包含Date和Sales列)建立关联,日期表需包含完整的日期序列,用于周维度的计算。
度量值DAX代码
Weekly Average Sales = VAR SelectedEndDate = MAX('Calendar'[Date]) VAR IsWeekend = WEEKDAY(SelectedEndDate, 2) > 5 VAR CurrentWeekMonday = SelectedEndDate - WEEKDAY(SelectedEndDate, 2) + 1 VAR CurrentWeekFriday = CurrentWeekMonday + 4 VAR PreviousWeekMonday = CurrentWeekMonday - 7 VAR PreviousWeekFriday = PreviousWeekMonday + 4 VAR CurrentWeekWeekdayTotal = CALCULATE( SUM('SalesTable'[Sales]), 'SalesTable'[Date] >= CurrentWeekMonday && 'SalesTable'[Date] <= CurrentWeekFriday ) VAR PreviousWeekWeekdayTotal = CALCULATE( SUM('SalesTable'[Sales]), 'SalesTable'[Date] >= PreviousWeekMonday && 'SalesTable'[Date] <= PreviousWeekFriday ) RETURN IF( IsWeekend, DIVIDE(CurrentWeekWeekdayTotal, 5), DIVIDE(PreviousWeekWeekdayTotal, 5) )
代码逻辑说明
SelectedEndDate:获取日历切片器选中日期范围的结束日期IsWeekend:判断结束日期是否为周末(使用WEEKDAY(...,2)时,周一=1、周五=5,周六/周日对应6/7,因此大于5即为周末)- 周范围变量:计算当周/上周的周一、周五日期,锁定周一至周五的区间
- 销售额总和计算:分别统计当周、上周工作日的销售额总和
- 返回结果:根据是否为周末,返回对应区间销售额除以5的均值(用
DIVIDE避免除以0的报错)
注意事项
- 切片器需绑定日期表的
Date列,确保MAX('Calendar'[Date])能正确获取选中的结束日期 - 若销售表中存在部分工作日无销售额的情况,
DIVIDE会自动处理分母为0的情况,返回空白而非错误
内容的提问来源于stack exchange,提问作者Shivam Sarin
相关产品推荐
相关产品推荐

