PowerBI DAX度量优化:折线图隐藏今日之后的ACT累计购车数据
解决ACT累计购车量折线图今日后无数据显示的问题
背景说明
- 数据模型包含两个表:
Rolling Date:滚动日期表,存储截至今日的每日日期记录Hasznaltauto mappák:购车记录表,每条记录对应一辆已购车辆,包含日期、车型、ID等字段
- 需求:制作折线图展示去年和今年的累计购车数量,每年累计值从0开始。其中:
KumuláltBevételezés度量用于计算累计数量ACT度量作为折线图Y轴,X轴为「年中日(day of year)」
- 现状:PY(去年)度量工作正常,但ACT(今年)折线在今日之后的部分不受日期筛选影响,始终显示全部车辆总数,需修改度量让ACT折线在今日之后无数据。
问题根源
原ACT度量仅限制了年份和日期小于等于当前上下文的最大日期,但未过滤「今日之后」的日期范围,导致当X轴年中日对应今年今日之后的日期时,依然会计算到该日期的累计值,最终显示全年总数。
修改后的DAX代码
1. 修正ACT度量
ACT = VAR jelenev = YEAR(TODAY()) VAR ma = TODAY() RETURN // 仅当当前上下文的最大日期不超过今日时,才计算累计值 IF(MAX('Rolling Date'[Dátum]) <= ma, CALCULATE( [KumuláltBevételezés], FILTER( ALL('Rolling Date'), YEAR('Rolling Date'[Dátum]) = jelenev && 'Rolling Date'[Dátum] <= MAX('Rolling Date'[Dátum]) && 'Rolling Date'[Dátum] <= ma // 新增:限制日期不超过今日 ) ), BLANK() // 今日之后返回空值,无数据显示 )
2. 优化KumuláltBevételezés度量(可选)
原度量未限制日期范围,配合修正后的ACT使用可保留;若需单独使用时避免异常,可添加今日过滤:
KumuláltBevételezés = VAR ma = TODAY() VAR current_max_date = MAX('Rolling Date'[Dátum]) RETURN IF(current_max_date <= ma, CALCULATE( COUNT('Hasznaltauto mappák'[mappa]), FILTER( ALL('Rolling Date'), 'Rolling Date'[Dátum] <= current_max_date && YEAR('Rolling Date'[Dátum]) = YEAR(current_max_date) && 'Rolling Date'[Dátum] <= ma // 新增:限制日期不超过今日 ) ), BLANK() )
效果说明
修改后,当折线图X轴的年中日对应今年今日之后的日期时,ACT度量返回BLANK(),折线在该部分无数据显示,符合需求。
内容的提问来源于stack exchange,提问作者Kocz
相关产品推荐
相关产品推荐

