如果当前月份的值不可用,PowerBi 将卡值更改为上个月的值

PowerBi Change Card values to previous month Value if Current month value is not available

我正在使用 powerbi,使用超过 2 个月的数据,编写 dax 查询并尝试构建报告。

我正在尝试在卡片视觉效果中显示月度值。

我可以使用下面的方法来做到这一点。

示例数据:-

PlanPrevMon = CALCULATE([PlanSum],PREVIOUSMONTH('Month Year'[Date]))

CustomKPI = IF(ISBLANK([PlanSum]),"No Data Available ",[PlanSum])&" "&IF([PlanSum]=[PlanPrevMon],"",IF([PlanSum] > [PlanPrevMon],UNICHAR(8679),UNICHAR(8681))&IF([PlanSum]<=0,"",""))

但在这里我不希望用户从切片器中选择月份值。 我想将卡值显示为 如果当前月份的值不可用,那么它应该自动与上个月的值进行比较,如下图所示

例如,2017 年 4 月的值不可用;在这种情况下,我希望它与 2017 年 3 月的值进行比较。 如果 2017 年 3 月的值也没有,则上个月的值依此类推


编辑

我尝试了@user5226582 的建议,但仍然得到错误的值,如下图所示。

如您所见,我仅限于交叉检查该值是否以正确的方式获得。

但不是。

这是我按照@user5226582 的建议使用的措施。

c = 
var temp = 'Revenue Report'[Date]
return CALCULATE(LASTNONBLANK('Revenue Report'[Planned Rev],
  'Revenue Report'[Planned Rev]),
  ALL('Revenue Report'),
  'Revenue Report'[Date]<=temp)`

如果我做错了什么,你能纠正我吗

这对...有帮助吗?

为了让 PlanPrevMon 列像这样显示,我首先创建了一个新的索引列:

id = COUNTROWS(FILTER(Sheet1, EARLIER(Sheet1[Date],1)>Sheet1[Date]))

然后我使用索引帮助创建 PlanPrevMon 列 分两步:

第 1 步:我创建了一个名为 PlanPrevMon1 的专栏。

PlanPrevMon1 = SUMX(FILTER(Sheet1,Sheet1[id]=EARLIER(Sheet1[id])-1),Sheet1[PlanSum])

第 2 步:我创建了另一个名为 PlanPrevMon 的专栏。

PlanPrevMon = if(ISBLANK(Sheet1[PlanPrevMon1]),
if(Sheet1[id]=1,0,CALCULATE(LASTNONBLANK(Sheet1[PlanPrevMon1],Sheet1[PlanPrevMon1]),ALL(Sheet1),ISBLANK(Sheet1[PlanSum]))),
Sheet1[PlanPrevMon1])

对于卡,我使用了这个措施:

Card = CALCULATE(LASTNONBLANK(Sheet1[PlanPrevMon],1),FILTER(Sheet1,Sheet1[id]=max(Sheet1[id])))

希望这有帮助。

您可以使用 LASTNONBLANK DAX 函数。

示例数据:

a b 
1 1 
2  
3 2 
4   
5 3  

计算列:

c = 
var temp = Table1[a]
return CALCULATE(LASTNONBLANK(Table1[b],Table1[b]),ALL(Table1),Table1[a]<=temp)

结果:

a b c
1 1 1
2   1
3 2 2
4   2
5 3 3