PowerBI & DAX:如何让度量值按近12个月规则在图表中展示
实现过去12个月滚动计算的DAX度量修改方案
首先给Event表添加一个日期计算列,把分散的年月转换成统一的日期值,方便后续时间范围计算:
Event Date = DATE(Event[Event Year], Event[Event Month], 1)
接下来修改度量值,通过时间智能函数定义过去12个月的滚动范围,替换原有的当月上下文:
Frequency Rate (Rolling 12 Months) = VAR CurrentEndDate = EOMONTH(MAX(Event[Event Date]), 0) VAR Rolling12Months = DATESINPERIOD(Event[Event Date], CurrentEndDate, -12, MONTH) VAR AvgTotalHours = CALCULATE(AVERAGE(Event[Event Total Hours]), Rolling12Months) VAR TypeACount = CALCULATE(COUNT(Event[Event ID]), Rolling12Months, Event[Event Type] = "Type A") RETURN IF(AvgTotalHours <> BLANK(), 10^6 * (TypeACount / AvgTotalHours), BLANK() )
关键逻辑说明:
CurrentEndDate:获取当前图表节点对应年月的最后一天,作为滚动周期的结束时间点Rolling12Months:用DATESINPERIOD生成从结束点往前推12个月的完整日期范围(包含当前年月)- 后续的
AvgTotalHours和TypeACount都基于这个滚动范围计算,替代了原度量仅统计当月的逻辑
优化建议:
如果数据量较大,建议创建独立的日期表并与Event表关联,时间智能函数的计算效率和准确性会更高:
Date Table = ADDCOLUMNS( CALENDAR(DATE(2020,1,1), DATE(2030,12,31)), -- 按需调整日期范围 "Year", YEAR([Date]), "Month", MONTH([Date]), "Year-Month", FORMAT([Date], "YYYY-MM") )
关联后,图表的X轴改用日期表的Year和Month字段即可。
内容的提问来源于stack exchange,提问作者Shiverz
相关产品推荐
相关产品推荐

