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 个月。

如果有帮助请告诉我。