我正在研究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)`
如果我做错了,你能否纠正我
答案 0 :(得分:1)
这有帮助......?
要让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