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

日期表DAX公式返回空值:周末日期计算异常问题排查

问题原因及解决办法

1. 日期表的无效结束日期导致数据截断

你创建日期表时使用了DATE(2026,4,31),但4月仅有30天,DAX会自动将这个无效日期转换为DATE(2026,5,1),导致日期表实际只包含到2026年5月1日的数据。如果某个日期(比如2026年4月28日-30日)之后的第一个周六(5月2日)不在日期表范围内,你的公式就会返回空值。

修正日期表的结束日期为有效日期:

Date = 
ADDCOLUMNS (
    CALENDAR (DATE (2024, 07, 1), DATE (2026, 4,30)),
    "Year", YEAR([Date]),
    "MonthNumber", MONTH([Date]),
    "Quarter", QUARTER([Date])
)

2. 原周末计算公式效率低且易出空值

原公式通过遍历整个日期表查找后续第一个周六,不仅运行效率低,还会因日期表范围限制返回空值。更简洁高效的方式是直接计算当前日期到本周六的天数差:

Week Ending on = [Date] + (6 - WEEKDAY([Date], 2))
  • WEEKDAY([Date],2)返回1(周一)到7(周日)的数值,其中6代表周六
  • 6 - WEEKDAY(...)得到当前日期到周六的天数,与原日期相加即可得到本周结束的周六日期
  • 若当天已是周六,结果即为当天,符合常规“周结束日”的需求

如果你的需求是当前日期之后的第一个周六(比如周日需返回下周六),可使用调整后的公式:

Week Ending on = 
VAR CurrentWeekday = WEEKDAY([Date], 2)
RETURN
    IF(CurrentWeekday = 6, [Date], [Date] + (6 - CurrentWeekday) + IF(CurrentWeekday > 6, 7, 0))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:26:08