Power BI中使用切片器按周及星期几汇总销售数据的问题
问题排查和解决办法
你的现有实现有几个明显问题,导致条形图不符合预期:
- 度量值里的字段引用错误:
MAX(sales_base[sale])应该是MAX(sales_base[date]),属于笔误 - 筛选逻辑没处理「超过选中日期的星期几显示0」的需求,所以所有星期几都有数值
- 用
AVERAGE计算销售额不符合“汇总”的需求,应该用SUM
修正步骤
1. 保留现有计算列
你之前加的两个计算列可以继续用:
week_num = WEEKNUM(sales_base[date]) week_day = WEEKDAY(sales_base[date])
注:如果你的星期几规则是周一为1,把第二个计算列改成WEEKDAY(sales_base[date], 2)即可
2. 替换成正确的度量值
删掉原来的WEEK度量值,用下面这个DAX表达式:
周内销售额 = VAR 选中日期 = MAX(sales_base[date]) VAR 选中周数 = WEEKNUM(选中日期) VAR 选中年份 = YEAR(选中日期) VAR 选中星期几 = WEEKDAY(选中日期) VAR 当前横轴星期几 = SELECTEDVALUE(sales_base[week_day]) RETURN IF( 当前横轴星期几 > 选中星期几, 0, CALCULATE( SUM(sales_base[sales]), sales_base[week_num] = 选中周数, YEAR(sales_base[date]) = 选中年份, sales_base[week_day] = 当前横轴星期几 ) )
3. 配置条形图
- 横轴选择
sales_base[week_day](如果原表中某些星期几没有数据,建议新建一个包含1-7的独立维度表,确保横轴始终显示7个条形) - 纵轴选择新创建的「周内销售额」度量值
- 切片器绑定
sales_base[date]字段,选择2023/01/04即可实现前4个条形有值、后3个为0的效果
关键逻辑说明
- 通过变量捕获选中日期的年份、周数和对应的星期几
- 判断当前横轴的星期几是否超过选中日期的星期几,超过则直接返回0
- 未超过时,计算该星期几在选中周内的销售额总和
内容的提问来源于stack exchange,提问作者Victor Barreto
相关产品推荐
相关产品推荐

