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

如何用DAX创建仅含周、月、年的日历表?解决表达式无效问题

修正后的DAX代码及解释

问题分析

你遇到的错误是因为FORMAT函数仅能处理标量值(单个值),无法直接作用于表对象,且原代码逻辑未正确关联周与对应的年月信息。以下是修正后的代码,可生成包含唯一周(周一为起始)、对应月份、年份的日历表:

修正代码

CalendarTable = 
VAR DateRange = CALENDAR(MIN(Messaging[week]), MAX(Messaging[week]))
VAR DateWithWeekInfo = 
    ADDCOLUMNS(
        DateRange,
        "WeekStart", [Date] - WEEKDAY([Date], 2), -- 计算每周的周一作为周起始
        "Year", YEAR([Date] - WEEKDAY([Date], 2)), -- 周归属的年份
        "Month", FORMAT([Date] - WEEKDAY([Date], 2), "mmmm") -- 周归属的月份(全称)
    )
VAR UniqueWeekCalendar = 
    SUMMARIZE(
        DateWithWeekInfo,
        [WeekStart],
        [Year],
        [Month]
    )
RETURN
    UniqueWeekCalendar

代码说明

  1. DateRange:生成Messaging表中week列最小日期到最大日期之间的所有连续日期。
  2. DateWithWeekInfo:为每个日期添加周起始(周一)、该周对应的年份和月份(以周起始日期为准,确保整周归属统一的年月)。
  3. UniqueWeekCalendar:通过SUMMARIZE分组去重,只保留唯一的周起始、年份和月份组合,得到最终的日历表。

可选调整

如果需要以周日作为周起始,只需将WEEKDAY([Date], 2)改为WEEKDAY([Date], 1);若要显示月份缩写,将"mmmm"改为"mmm"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:12:44