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

如何将一周天数从7天扩展为8天?DAX日期表调整需求

解决方案:适配8天周的周末归属调整

DAX 端实现方案

核心逻辑

将每周周期定义为周一至下周一(共8天),但把第8天(下周一)划归到前一周的周末范围。通过计算「周结束日」来统一归属,确保2023年8月28日(周一)被纳入8月27日(周日)的周末组。

具体代码

假设你的日期表名为DateTable,已有Date列,新增以下计算列:

周结束日 = 
VAR 当前日期 = 'DateTable'[Date]
VAR 周起始日 = DATE(YEAR(当前日期), MONTH(当前日期), DAY(当前日期) - WEEKDAY(当前日期, 2) + 1) // 周一为周起始
VAR 是否为第8天 = WEEKDAY(当前日期, 2) = 1 // 判断是否是周一(8天周的第8天)
RETURN
IF(是否为第8天, 周起始日 - 1, 周起始日 + 6) // 第8天归到上周日,其余日期归到当周周日

再新增列标记周末:

周末标记 = 
IF(
    'DateTable'[Date] = 'DateTable'[周结束日] || WEEKDAY('DateTable'[Date], 2) = 1,
    "WE",
    "工作日"
)

执行后,2023年8月28日会被标记为WE,且归属到8月27日的周结束日范围内。


Power Query 端实现方案

步骤1:计算周结束日

在Power Query中加载日期表后,添加自定义列:

let
    当前日期 = [Date],
    星期序号 = Date.DayOfWeek(当前日期, Day.Monday), // 周一为0,周日为6
    周结束日 = if 星期序号 = 0 then Date.AddDays(当前日期, -1) else Date.AddDays(当前日期, 6 - 星期序号)
in
    周结束日

步骤2:标记周末

再添加自定义列完成周末标记:

if [Date] = [周结束日] or Date.DayOfWeek([Date], Day.Monday) = 0 then "WE" else "工作日"

最后关闭并上载,即可得到符合业务需求的日期表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:32:36