Power BI中借助DAX创建每月首个工作日标识的问题求助
Power BI日期表每月首个工作日标识列DAX实现方案
原有代码问题原因
你之前的代码未限制年份维度,也未正确处理行上下文和筛选上下文的转换,导致筛选范围覆盖所有年份的对应月份,最终仅返回每年最早的符合条件日期,不符合按年月分组的需求。
正确实现代码
直接新增如下计算列即可一步得到你需要的first_workday_per_month标识字段:
first_workday_per_month = VAR cur_year = D_DATE[year] VAR cur_month = D_DATE[month] // 计算当前行所属年月的首个工作日 VAR month_first_workday = CALCULATE( MIN(D_DATE[date]), ALL(D_DATE), D_DATE[year] = cur_year, D_DATE[month] = cur_month, D_DATE[first_workday_per_week] = 1 ) // 匹配当前行日期返回标识 RETURN IF(D_DATE[date] = month_first_workday, 1, 0)
逻辑说明
- 用
VAR提前固定当前行所属的年份、月份,避免上下文转换后取值混乱 ALL(D_DATE)清除当前行上下文的筛选限制,在全表范围内筛选同年同月、且为周首个工作日的日期,取最小值即为当月首个工作日- 最后判断当前行日期是否匹配当月首个工作日,返回1或0作为标识
适配说明
如果你的year、month字段为文本格式,只要字段取值规则统一,无需修改代码可直接运行;如果日期表已被标记为官方日期表,执行效率会更高。
内容的提问来源于stack exchange,提问作者MartinL
相关产品推荐
相关产品推荐

