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
相关产品推荐
相关产品推荐

