Power BI中如何用相对日期自动显示近10周及对应近3年同期数据?
解决方案:用DAX度量值实现全自动同期周对比
核心思路
因为实时连接限制了查询编辑器的使用,所以通过DAX度量值动态识别最近10周的周标识,再筛选近3年中对应周的销售数据,无需手动调整切片器。
步骤1:计算最近10周的周范围
先创建一个度量值,标记出当前日期往前推10周的周编号(用年份+周数的组合避免跨年周冲突,比如2023年第52周和2022年第52周可明确区分):
最近10周标识 = VAR CurrentDate = TODAY() VAR Last10WeeksEnd = CurrentDate - WEEKDAY(CurrentDate, 2) + 1 // 取最近一周的周一,可根据业务调整周起始日 VAR Last10WeeksStart = Last10WeeksEnd - (10*7 -1) VAR CurrentYearWeek = YEAR(Last10WeeksEnd) * 100 + WEEKNUM(Last10WeeksEnd, 2) VAR MinYearWeek = YEAR(Last10WeeksStart) * 100 + WEEKNUM(Last10WeeksStart, 2) RETURN IF( YEAR('日期表'[日期]) >= YEAR(CurrentDate) - 2 // 锁定近3年范围 && YEAR('日期表'[日期])*100 + WEEKNUM('日期表'[日期], 2) >= MinYearWeek && YEAR('日期表'[日期])*100 + WEEKNUM('日期表'[日期], 2) <= CurrentYearWeek, 1, 0 )
注:WEEKNUM的第二个参数2表示周起始日为周一,若你的业务以周日为起始,可改为1。
步骤2:创建带筛选的销售度量值
基于上面的标识,创建仅计算符合条件的同期周销售数据的度量值:
同期周销售额 = CALCULATE( SUM('销售表'[销售额]), FILTER( ALL('日期表'), [最近10周标识] = 1 ) )
步骤3:可视化配置
- 将日期表中的年份字段拖到可视化的轴上,用于区分不同年份的同期数据
- 使用上述
同期周销售额度量值作为值,即可自动展示近3年中对应最近10周的销售数据 - 无需额外切片器,度量值会随当前日期自动更新,每周自动调整对应的周范围
补充说明
- 如果你的周计算规则是ISO标准周(每年52/53周,周一为起始日),可以用
ISO.WEEKNUM函数替代WEEKNUM,确保跨年周的准确性 - 若需要对比单周数据,可将日期表中的周数字段也拖到轴上,按周展示各年份的同期值
内容的提问来源于stack exchange,提问作者Magnus Christophersen
相关产品推荐
相关产品推荐

