Power Pivot Measure 计算的 Sumif 等价物
Sumif equivalent for Power Pivot Measure Calculations
这是我的第一个问题,我会尽力以好的方式提出我的问题。
我在使用 Excel 方面非常有经验,但对 Power Tools 还是个新手。我按以下方式设置了数据模型
Table 销售数据:
Day | Amount Ordered | Amount Sent | toBeAchived (Service Level per Month)*
1 10 10 87,5%
2 20 15 87,5%
3 15 15 87,5%
..
51 20 18 90,0%
Table 日历:
Day | Month
1 1
2 1
3 1
..
51 2
然后我创建了一个度量:
服务水平:=总和(订购金额)/总和(发送金额)
如果我现在创建一个数据透视表 table 我可以聚合月份并查看例如第 1 个月的服务水平。
现在我想构建一个图表,x 轴上有天数,但具有每月平均服务水平,但由于它是分解的,所以我每天都会得到测量值。
所以我需要的是一个 sumif(Amount ordered, Month = @Month) 这在 Excel Table.
中很容易
*我尝试将这样的计算函数作为 CalculatedColumn:
计算(总和('Sales Table'[订购金额]),日历[月份]=日历[月份])
这当然行不通。所以问题是,如何将 CALCULATE 函数中的过滤器设置为每一行的 @Month 值?
提前感谢您的帮助
如果我理解您的问题,我会提供计算每月服务水平 度量的答案。但是,我不清楚您将如何根据该月度值计算每月平均服务水平,因为平均值与每月服务水平值相同,在您的示例中为每月的平均值 1
会是 87.5
,对吧?
首先使用以下表达式在 SalesData
table 中创建一个名为 SalesMonth
的计算列:
= RELATED ( 'Calendar'[Month] )
Note before create the previous calculated column you will have to create a relationship (if doesn't exist yet)
between SalesData
table and Calendar
table using Day column in both
tables.
现在为每月订购的总金额创建一个度量:
Ordered Monthly :=
CALCULATE (
SUM ( SalesData[Amount Ordered] ),
FILTER (
ALL ( SalesData ),
COUNTROWS (
FILTER ( SalesData, SalesData[SalesMonth] = EARLIER ( SalesData[SalesMonth] ) )
)
)
)
必须为每月发送的总金额创建相同的度量:
Sent Monthly:=
CALCULATE (
SUM ( SalesData[Amount Sent] ),
FILTER (
ALL ( SalesData ),
COUNTROWS (
FILTER ( SalesData, SalesData[SalesMonth] = EARLIER ( SalesData[SalesMonth] ) )
)
)
)
最后,您可以使用此表达式创建 Service Level per Month
度量:
Service Level per Month :=
DIVIDE ( [Ordered Monthly], [Sent Monthly], BLANK () )
这是创建的措施的示例:
注意从 1 到 5 的日子对应于第 1 个月,而第 34 和 35 天对应于第 2 个月。
如果有帮助请告诉我。
这是我的第一个问题,我会尽力以好的方式提出我的问题。
我在使用 Excel 方面非常有经验,但对 Power Tools 还是个新手。我按以下方式设置了数据模型
Table 销售数据:
Day | Amount Ordered | Amount Sent | toBeAchived (Service Level per Month)*
1 10 10 87,5%
2 20 15 87,5%
3 15 15 87,5%
..
51 20 18 90,0%
Table 日历:
Day | Month
1 1
2 1
3 1
..
51 2
然后我创建了一个度量: 服务水平:=总和(订购金额)/总和(发送金额)
如果我现在创建一个数据透视表 table 我可以聚合月份并查看例如第 1 个月的服务水平。
现在我想构建一个图表,x 轴上有天数,但具有每月平均服务水平,但由于它是分解的,所以我每天都会得到测量值。
所以我需要的是一个 sumif(Amount ordered, Month = @Month) 这在 Excel Table.
中很容易*我尝试将这样的计算函数作为 CalculatedColumn: 计算(总和('Sales Table'[订购金额]),日历[月份]=日历[月份])
这当然行不通。所以问题是,如何将 CALCULATE 函数中的过滤器设置为每一行的 @Month 值?
提前感谢您的帮助
如果我理解您的问题,我会提供计算每月服务水平 度量的答案。但是,我不清楚您将如何根据该月度值计算每月平均服务水平,因为平均值与每月服务水平值相同,在您的示例中为每月的平均值 1
会是 87.5
,对吧?
首先使用以下表达式在 SalesData
table 中创建一个名为 SalesMonth
的计算列:
= RELATED ( 'Calendar'[Month] )
Note before create the previous calculated column you will have to create a relationship (if doesn't exist yet) between
SalesData
table andCalendar
table using Day column in both tables.
现在为每月订购的总金额创建一个度量:
Ordered Monthly :=
CALCULATE (
SUM ( SalesData[Amount Ordered] ),
FILTER (
ALL ( SalesData ),
COUNTROWS (
FILTER ( SalesData, SalesData[SalesMonth] = EARLIER ( SalesData[SalesMonth] ) )
)
)
)
必须为每月发送的总金额创建相同的度量:
Sent Monthly:=
CALCULATE (
SUM ( SalesData[Amount Sent] ),
FILTER (
ALL ( SalesData ),
COUNTROWS (
FILTER ( SalesData, SalesData[SalesMonth] = EARLIER ( SalesData[SalesMonth] ) )
)
)
)
最后,您可以使用此表达式创建 Service Level per Month
度量:
Service Level per Month :=
DIVIDE ( [Ordered Monthly], [Sent Monthly], BLANK () )
这是创建的措施的示例:
注意从 1 到 5 的日子对应于第 1 个月,而第 34 和 35 天对应于第 2 个月。
如果有帮助请告诉我。