如何用DAX获取上月排除周末的数据值?现有代码优化需求
解决方案
原表达式用于计算所有日期中每日AccessionNo去重计数的最大值,要修改为仅统计上月非周末日期的对应最大值,可参考以下两种DAX实现:
实现方式一:结合DATEADD筛选上月+周几判断
MAXX( FILTER( VALUES(VW_RisOrderTable[OrderDate].[Date]), -- 判定日期属于上月(当前日期所在月份的上一个月) DATEADD(VW_RisOrderTable[OrderDate].[Date], 1, MONTH) IN DATESMTD(TODAY()) && -- 仅保留周一至周五(WEEKDAY参数2表示周一=1,周五=5) WEEKDAY(VW_RisOrderTable[OrderDate].[Date], 2) <= 5 ), CALCULATE(DISTINCTCOUNT(VW_RisOrderTable[AccessionNo])) )
实现方式二:用PARALLELPERIOD定位上月+排除周末
MAXX( FILTER( -- 获取当前上下文对应的上月日期范围 PARALLELPERIOD(VW_RisOrderTable[OrderDate].[Date], -1, MONTH), -- 排除周日(1)和周六(7),WEEKDAY参数1表示周日=1 NOT(WEEKDAY([Date], 1) IN {1, 7}) ), CALCULATE(DISTINCTCOUNT(VW_RisOrderTable[AccessionNo])) )
注意事项
WEEKDAY的第二个参数需根据你的日期习惯调整:- 参数1:周日=1,周六=7
- 参数2:周一=1,周日=7
- 若之前用
PARALLELPERIOD未得到预期结果,大概率是未正确结合周末筛选逻辑,或上下文存在冲突(比如当前页面有其他日期筛选器),可先单独测试PARALLELPERIOD返回的日期范围是否符合预期。
内容的提问来源于stack exchange,提问作者Atif
相关产品推荐
相关产品推荐

