Power BI中如何在SWITCH函数中使用通配符匹配日期?
实现按月份前缀匹配的MonthOrder自定义列方案
方案一:基于文本前缀匹配(适配原文本格式)
直接提取DateText的前3个字符(月份缩写)进行匹配,无需关注后续年份,修改后的DAX公式如下:
MonthOrder = SWITCH( LEFT([DateText], 3), "Apr", 1, "May", 2, "Jun", 3, "Jul", 4, "Aug", 5, "Sep", 6, "Oct", 7, "Nov", 8, "Dec", 9, "Jan", 10, "Feb", 11, "Mar", 12, BLANK() // 可选:添加不匹配时的默认返回值 )
说明:LEFT([DateText], 3)会提取日期文本的前3位(比如从Apr-2025中取出Apr),SWITCH根据这个固定前缀返回对应的排序值,无论后续年份如何变化,都能正确匹配。
方案二:基于日期转换的动态计算(推荐格式规范的场景)
如果DateText可以被Power BI识别为合法日期格式,推荐用日期函数动态计算排序值,避免硬编码月份缩写:
MonthOrder = VAR CurrentMonth = MONTH(DATEVALUE([DateText])) RETURN // 4月及以后的月份,排序值为月份-3;1-3月则为月份+9 IF(CurrentMonth >= 4, CurrentMonth - 3, CurrentMonth + 9)
说明:先通过DATEVALUE将文本转成日期,用MONTH提取月份数字,再通过简单的条件计算得到你需要的排序规则,这个方案扩展性更强,无需每年更新公式。
内容的提问来源于stack exchange,提问作者Paula Morrison
相关产品推荐
相关产品推荐

