如何用DAX基于周数、年份和星期几计算日期并实现星期排序?
问题解决指南
一、让Weekday按周一至周日顺序排列
- 新建计算列
Weekday_Order,用DAX给每个星期分配排序值:Weekday_Order = SWITCH( [Weekday], "星期一", 1, "星期二", 2, "星期三", 3, "星期四", 4, "星期五", 5, "星期六", 6, "星期日", 7 ) - 选中
Weekday列,在「列工具」选项卡点击「排序依据」,选择Weekday_Order列,之后可视化中的星期就会按 chronological 顺序展示。
二、修复DAX日期计算的Token EOF错误
原公式错误源于列名不匹配([week no]需对应数据集里的[Week_Number]),同时逻辑上需调整周数计算避免日期偏移。修正后的公式如下:
New_Date = VAR _st = DATE([Year], 1, 1) VAR _st_week = _st - WEEKDAY(_st, 2) + 1 // 取当年第一个周一作为第一周起始 RETURN _st_week + 7 * ([Week_Number] - 1) // 减1是因为第一周已从_st_week开始,避免多算7天
- 说明:
WEEKDAY(_st, 2)指定周一为一周第1天,确保_st_week是当年第一个周一;[Week_Number]-1的调整是为了让第1周对应起始日期,后续周数按(周数-1)*7天累加,得到对应周的周一日期。
内容的提问来源于stack exchange,提问作者PS_22
相关产品推荐
相关产品推荐

