我在POWER BI工作并尝试计算上个月滚动总数的DAX表达式。我有一个过滤器,我选择某个月,我想计算上个月的滚动总量。
以下计算可以完美地计算所选日期范围的滚动总计。
如何计算前几个月的滚动总数?
Rolling_Total_Current_Month = CALCULATE(
SUM(SalesInvoice[Sales])
,FILTER(ALLSELECTED(SalesInvoice), (SalesInvoice[Date]) <= MAX(SalesInvoice[Date])))
以下是我的数据示例,我每天都有多个类别的销售额(事实上我有更多的详细信息列,但这已经过简化)
Date Day Amount Category
1/1/2016 1 100 A
1/1/2016 1 120 B
1/1/2016 1 90 C
1/2/2016 2 500 A
1/2/2016 2 321 B
1/2/2016 2 143 C
到目前为止,我已经提出了一个方程来解决滚动总数,但是当我尝试切片并查看单个类别的滚动总数时,它在前一个月不起作用。我只保留了上个月的原始滚动总数。
以下是上个月滚动总数的公式。但是,一旦根据类别切片,不会重新计算上个月的滚动总数。
PREVIOUS_MONTH_ROLLING_TOTAL =
CALCULATE(
[Current Sales]
,FILTER(
ALL( Orders )
,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
&& Orders[Day] <= MAX( Orders[Day] )
)
)
答案 0 :(得分:1)
首先,我在名为Orders -
的表中有这样的数据Date Amount
12/12/2017 100
12/12/2017 200
12/12/2017 300
1/1/2018 400
1/1/2018 500
我首先创建一个名为Year&amp;的计算列。使用公式月: -
Year = YEAR(Orders[Date])
Month = FORMAT(Orders[Date],"mmmm")
然后我创建了一个名为Month Number的列,当表中涉及一年以上以及识别前几个月时,这将有助于排序。
MonthNumber = DATEDIFF(Min(Orders[Date]),Orders[Date],MONTH)
当月销售额可以是度量值或计算列。在问题中,您通过计算列获得了当月销售的答案,如果您想采取措施,那么这样的事情将在汇总表上起作用。
Current Month Sales = SUm(Orders[Amount])
我还会创建一个名为Key的列: -
Key = Orders[MonthNumber] & Orders[Category]
现在,对于上个月销售,我会创建一个度量来查找我们创建的选定MonthNumber。
Previous Month Sales =
Var SelectedCategory = SELECTEDVALUE(Orders[Category])
Var SelectedMonthNumberr = SELECTEDVALUE(Orders[MonthNumber]) - 1
Var ReqKey = SelectedMonthNumberr & SelectedCategory
Return
IF(ISBLANK(SelectedCategory) <> True(),
CALCULATE(SUM(Orders[Amount]),FILTER(ALL(Orders), Orders[Key] = ReqKey)),
CALCULATE(SUM(Orders[Amount]),FILTER(ALL(Orders), Orders[MonthNumber] = SelectedMonthNumberr)))
或您的措施
PREVIOUS_MONTH_ROLLING_TOTAL =
CALCULATE(
[Current Sales]
,FILTER(
ALL( Orders )
,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
&& Orders[Day] <= MAX( Orders[Day] )
)
)
您可以添加另一个过滤项目&& Orders[Category] = SELECTEDVALUE(Orders[Category])
,但如果您没有选择任何类别,或者在没有类别的表格或视觉效果上,则无效。所以,你需要在我的测量公式中引用if else逻辑。
如果这有帮助,请告诉我。
答案 1 :(得分:1)
我已经解决了如何让前几个月滚动总数。 你必须做三件事。首先在数据表中创建一个月号列(这用作一个整数,从中减去1个月)。您还必须创建一个日期列。
然后为当前销售或任何您的价值创建一个度量。
为当月销售量创建度量
Current Sales = SUM(Orders[Amount])
然后这个等式。
PREVIOUS_MONTH_ROLLING_TOTAL =
CALCULATE(
[Current Sales]
,FILTER(
ALL( Orders )
,Orders[MonthNumber] = MAX( Orders[MonthNumber] ) - 1
&& Orders[Day] <= MAX( Orders[Day] )
)
)
此等式的概念是能够在图表上显示前几个月的滚动总数,其中X轴为&#34; DAY&#34; (所以1-31)然后你可以在同一个图表或表格上查看当月,上个月,去年同期。
答案 2 :(得分:1)
尝试以下几点:
Rolling_Total_Previous_Month =
VAR CurrentMonth = MAX(SalesInvoice[Date])
VAR PreviousMonth = EOMONTH(CurrentMonth,-1)
RETURN CALCULATE(SUM(SalesInvoice[Sales]), SalesInvoice[Date] <= PreviousMonth)