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

时间:2017-05-13 05:10:04

标签: powerbi dax powerquery m

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

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

我可以使用下面的措施来做到这一点。

示例数据: - enter image description here

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,"",""))

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

enter image description here

例如,2017年4月的价值不可用;在这种情况下,我希望它与2017年3月的价值进行比较。 如果2017年3月的价值也没有,那么前一个月的价值等等

修改

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

enter image description here

正如你所看到的,我限制交叉检查价值是否以正确的方式得到。

但不是。

这是我用@ 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)`

如果我做错了,你能否纠正我

2 个答案:

答案 0 :(得分:1)

这有帮助......?

enter image description here

要让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])))

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用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