如何调整DAX公式,计算仅含当期活跃经销商的上年同期销量?
解决方案:筛选当期有销售的经销商计算上年同期销量
要实现只统计当期选中月份有销售记录的经销商的上年同期销量,我们可以通过DAX的变量定义+筛选逻辑来完成,具体步骤和公式如下:
核心思路
- 先提取当前切片器选中月份下,所有有销售记录的经销商ID集合;
- 在计算上年同期销量时,额外添加筛选条件,只保留属于这个集合的经销商的上年同期数据。
修改后的DAX公式
UnitsLastYear_Filtered = VAR CurrentActiveResellers = VALUES(Orders[ResellerID]) // 获取当期有销售的经销商ID列表 RETURN CALCULATE( SUM(Orders[Units]), SAMEPERIODLASTYEAR(Orders[Date]), // 定位到上年同期月份 Orders[ResellerID] IN CurrentActiveResellers // 仅筛选当期有销售的经销商 )
公式逻辑验证(对应你的示例)
当切片器选中May-17时:
CurrentActiveResellers会提取出当期有销售的经销商ID:{1, 3}(ResellerID=2在May-17没有销售记录,被排除);SAMEPERIODLASTYEAR定位到May-16;- 最后只计算May-16中ResellerID=1和3的销量:
4 + 5 = 9,完全符合你的需求。
补充说明
VALUES(Orders[ResellerID])会自动根据当前上下文(切片器选中的月份)返回有销售记录的唯一经销商ID,替代方案也可以用DISTINCT(Orders[ResellerID]),效果一致;- 这个逻辑可以适配多维度筛选(比如同时选中多个月份、多个国家),变量会自动根据当前上下文动态更新经销商列表。
内容的提问来源于stack exchange,提问作者nothingman
相关产品推荐
相关产品推荐

