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

DAX中含IF语句的计算列:如何实现Previous_Week判断逻辑

DAX计算列实现当前周、上周及其他标记

需求:创建计算列,将日期标记为当前周(CW)、上周(PW)或其他(Non)。已有识别当前周的代码,需完善上周的判断逻辑。

现有可用代码(识别当前周/其他)

get_CW = // 正常工作,标记当前周为"CW",其余为"Non"
IF(
    AND(
        WEEKNUM(TODAY()) = WEEKNUM('Calendar'[Date]),
        YEAR(TODAY()) = YEAR('Calendar'[Date])
    ),
    "CW",
    "Non"
)

完善后的完整代码(包含上周判断)

需要注意跨年场景(比如当前是新年第一周,上周属于上一年的最后一周),同时统一周的起始规则(用WEEKNUM的第二个参数2表示周一到周日,避免不同规则导致的误差):

get_CW_and_PW = 
IF(    
    // 判断当前周
    AND(
        WEEKNUM(TODAY(), 2) = WEEKNUM('Calendar'[Date], 2),
        YEAR(TODAY()) = YEAR('Calendar'[Date])
    ),
    "CW",
    IF(    
        // 判断上周:包含非跨年和跨年两种情况
        OR(
            // 非跨年:当前周数减1等于日期周数,且年份相同
            AND(
                WEEKNUM(TODAY(), 2) - 1 = WEEKNUM('Calendar'[Date], 2),
                YEAR(TODAY()) = YEAR('Calendar'[Date])
            ),
            // 跨年:当前是当年第1周,日期属于上一年的最后一周
            AND(
                WEEKNUM(TODAY(), 2) = 1,
                WEEKNUM('Calendar'[Date], 2) = WEEKNUM(DATE(YEAR(TODAY())-1, 12, 31), 2),
                YEAR('Calendar'[Date]) = YEAR(TODAY()) - 1
            )
        ),
        "PW",
        "Non"
    )
)

逻辑说明

  • 当前周判断:保持原有逻辑,统一使用周起始参数2确保一致性
  • 上周判断:
    1. 常规场景:当前周数减1等于日期的周数,且年份一致
    2. 跨年场景:若当前是当年第1周,则匹配上一年最后一周的日期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:22:42