需要将当前月份与过去3个月的平均功率倍数进行比较

时间:2018-09-27 06:50:55

标签: powerbi

我有一个数据,其中包含部门名称以及每个月每个部门的相应金额,如下所示:

表1:

部门名称金额期限

 XXX        20     Jan,2018
 XXX        30     Feb,2018
 XXX        50     Mar,2018
 XXX        70     April,2018
 ....

 YYYY       20    Jan,2018    
 YYYY       30    Feb,2018    
 YYYY       50    Mar,2018    
 YYYY       70    April,2018    
 ....

我需要计算最近3个月的平均值(例如,对于部门XXXX,如果我选择4月,则需要计算(Jan,Feb,Mar)(20+30+50)/3 =33.33)的平均金额,并将其与当前(April) month (70)进行比较

我已经为过去3个月的平均值创建了一个计算列,如下所示(我还在Power BI中创建了一个日历表)

AVG3mth = 
CALCULATE(SUM('Table1'[Amount]),DATESINPERIOD(Calender[Date],LASTDATE('Table1'[Period]),-3,MONTH))/3

(但是它只是将当前月份除以3,而不是最后3毫秒)。

以及进行比较时如果最近3个月的平均值大于当前月份,则我应将其突出显示为“是”,因为与最近3个月相比,金额被丢弃。我添加了另一列作为“已删除?”对于相同的。

Dropped? = IF(VALUES('Table1'[Amount])<[AVG3mth], "Yes", "No")

此外,如果我在切片器中选择特定月份(期间),则需要在报告中获取这些月份,金额,最近3个月的平均值以及仅删除是/否。

附上我当前的报告屏幕截图(如果您对此进行调查,将会很清楚)

Report Screenshot

1 个答案:

答案 0 :(得分:0)

要执行此操作,您需要1个计算列和3个度量。

首先,我创建了一个称为MonthDiff的新列(计算列

MonthDiff = DATEDIFF(MIN(Table1[Period]),Table1[Period],MONTH)

所以之后,我创建了最近三个月的平均值测量

Average Last 3 Months = 

   Var selectedmonth = SELECTEDVALUE(Table1[MonthDiff])

   Var startingMonth = (selectedmonth - 4)   

   Var selecteddepartment = SELECTEDVALUE(Table1[Dept name])                                                                                                                                                                        

Return  CALCULATE(AVERAGE(Table1[Amount]), FILTER(ALL(Table1), Table1[MonthDiff] > startingMonth && Table1[MonthDiff] < selectedmonth),FILTER(ALL(Table1),Table1[Dept name] = selecteddepartment))

因此,您可以创建当前选择的值 Measure

SelectedAmount = SELECTEDVALUE(Table1[Amount])

然后您可以创建拖放 Measure

Drop = var currentvalue = SELECTEDVALUE(Table1[Amount])   

  Var selectedmonth = SELECTEDVALUE(Table1[MonthDiff])                                                                                                                                                              

  Var startingMonth = (selectedmonth - 4)  

  Var selectedDepartment = SELECTEDVALUE(Table1[Dept name])                                                                                                                                                                         

  Var averagevalue = CALCULATE(AVERAGE(Table1[Amount]), FILTER(ALL(Table1), Table1[MonthDiff] > startingMonth && Table1[MonthDiff] < selectedmonth), FILTER(All(Table1),Table1[Dept name] = selectedDepartment))                                                                    

Return if(averagevalue > currentvalue, "Yes", "No")

这是我的最终输出,

final output

请告诉我,是否有帮助。


我的最佳实践

  1. 在处理涉及多个过滤器的度量时, 最好使用Var声明它们并通过返回 在制定度量时会在卡片视觉上输出。