首页 文章

需要将当前月份与power bi中最近3个月的平均值进行比较

提问于
浏览
0

我有一个带有Dept名称的数据及每个月每个部门的相应金额,如下所示:

表格1 :

Dept name Amount Period

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?”对于相同的 .

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

而且,如果我在切片机中选择特定月份(期间),我需要在报告中获得那些月份,金额,最近3个月的平均值和单独下降是/否 .

附上我当前的报告截图(如果你研究这个,你会明白的)

Report Screenshot

1 回答

  • 0

    为此,您需要1个计算列和3个度量 .

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

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

    所以之后,我创建了过去3个月的平均值

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

    然后,您可以创建drop 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

    如果这有帮助,请告诉我 .


    我的最佳实践

    • 当您处理涉及多个过滤器的度量时,最好使用Var声明它们,并在开发度量时通过返回卡上的输出来测试它 .

相关问题