You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI基于ID实现当周与上周销售额对比的DAX公式咨询

Power BI DAX 按ID统计当周/上周销售额

前提说明

假设你已具备以下基础:

  • 销售数据表(命名为销售数据):包含ID、销售日期、销售额字段
  • 日历表(命名为日历表):包含日期、周数(通过WEEKNUM函数生成)、年份字段,且已与销售数据通过销售日期和日期建立关联关系(销售数据为多端)

1. 计算当周销售额列

在销售数据表中新建计算列,DAX公式如下:

当周销售额 = 
VAR 当前ID = '销售数据'[ID]
VAR 当前周 = RELATED('日历表'[周数])
VAR 当前年 = RELATED('日历表'[年份])
RETURN
CALCULATE(
    SUM('销售数据'[销售额]),
    FILTER(
        ALL('销售数据'),
        '销售数据'[ID] = 当前ID
        && RELATED('日历表'[周数]) = 当前周
        && RELATED('日历表'[年份]) = 当前年
    )
)

2. 计算上周销售额列

同样在销售数据表中新建计算列,处理跨年周数逻辑:

上周销售额 = 
VAR 当前ID = '销售数据'[ID]
VAR 当前周 = RELATED('日历表'[周数])
VAR 当前年 = RELATED('日历表'[年份])
VAR 上周周数 = IF(当前周 = 1, 52, 当前周 - 1) -- 若当前是第1周,上周为去年第52周(部分年是53周,需根据你的WEEKNUM参数调整)
VAR 上周年份 = IF(当前周 = 1, 当前年 - 1, 当前年)
RETURN
CALCULATE(
    SUM('销售数据'[销售额]),
    FILTER(
        ALL('销售数据'),
        '销售数据'[ID] = 当前ID
        && RELATED('日历表'[周数]) = 上周周数
        && RELATED('日历表'[年份]) = 上周年份
    )
)

关键注意事项

  • 确保WEEKNUM的参数统一:比如你用WEEKNUM([日期],2)表示周一为周起始,日历表和销售数据的周数计算必须用相同参数,避免周数匹配错误
  • 跨年周数调整:如果你的日历表中存在第53周的情况,需将公式中的52改为53,以适配实际周数规则
  • 关系有效性:检查销售数据与日历表的关联是否生效,否则RELATED函数无法正确调用日历表的字段

内容的提问来源于stack exchange,提问作者Meghan Contet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:07:25