我有一个数据,其中包含部门名称以及每个月每个部门的相应金额,如下所示:
表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个月的平均值以及仅删除是/否。
附上我当前的报告屏幕截图(如果您对此进行调查,将会很清楚)
答案 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")
这是我的最终输出,
请告诉我,是否有帮助。