Power BI中如何在日期表按周一为首日获取可排序的星期与月份
Power Query日期表:实现星期/月份的有序显示
一、星期信息处理(周一为起始日,周日对应7)
要兼顾排序需求和显示效果,需要同时维护数字排序键和星期名称:数字键用于图表排序,名称用于前端展示。具体操作如下:
- 添加星期序号(数字类型,周一=1,周日=7):
#"Added Weekday Order" = Table.AddColumn(#"你的上一步骤名称", "Weekday Order", each let dayNum = Date.DayOfWeek([Date], Day.Monday) // 指定周一为一周第一天,返回0(周一)到6(周日) in if dayNum = 6 then 7 else dayNum + 1, Int64.Type )
- 添加对应的中文星期名称:
#"Added Weekday Name" = Table.AddColumn(#"Added Weekday Order", "Weekday Name", each Date.DayOfWeekName([Date], "zh-CN", Day.Monday), type text )
在可视化图表中,将Weekday Name设为分类轴,再设置排序规则为Weekday Order升序,就能实现周一到周日的正确顺序。
二、月份信息处理(按一月到十二月排序)
同样采用「数字序号+文本名称」的方案:
- 添加月份序号(1-12,数字类型):
#"Added Month Order" = Table.AddColumn(#"你的上一步骤名称", "Month Order", each Date.Month([Date]), Int64.Type)
- 添加中文月份名称:
#"Added Month Name" = Table.AddColumn(#"Added Month Order", "Month Name", each Date.MonthName([Date], "zh-CN"), type text)
图表中使用Month Name作为显示字段,以Month Order作为排序依据,即可实现月份的自然排序。
关于你之前的代码问题
你之前调用Date.DayOfWeekName.monday是错误语法,Date.DayOfWeekName是函数而非属性集合,正确调用需要传入日期参数,可选指定语言和一周起始日,所以之前的代码才返回了数字而非星期名称。
内容的提问来源于stack exchange,提问作者AarCr
相关产品推荐
相关产品推荐

