PowerPivot 3个月滚动平均值

时间:2017-11-01 14:30:24

标签: powerbi powerpivot dax

我需要一些帮助在PowerPivot中创建一个度量。我用Google搜索并尝试了所有可以找到的成功选项。我有一个销售线索的事实表。一些线索给了我们一些不卖。我需要衡量潜在客户的价值。我将这些值相加并将其除以表中的记录数

Average Total of Leads:=calculate(Table1[Sum of Value]/Table1[Count of Lead name])

我的问题是创建一个给我3个月滚动平均值的度量。

我试过了:

Roll3Average:=[Average Value of leads]/CALCULATE(DISTINCTCOUNT(dimdate[MonthName]), 
          DATESINPERIOD(dimdate[Dates],
                        LASTDATE(dimdate[Dates]),-3,Month
                       )
         )

我试过了:

Rolling3Average:=IF(COUNTROWS(VALUES(dimdate[MonthName])) = 1, 
    CALCULATE( 
[Average of Value]/ COUNTROWS(VALUES(dimdate[MonthName] ) )  , 
            DATESBETWEEN( 
                dimdate[Dates], 
                FIRSTDATE(PARALLELPERIOD(dimdate[dates], -2, MONTH)), 
                LASTDATE(PARALLELPERIOD(dimdate[dates], 0, MONTH)) 
            ), ALL(DimDate) 
    ) 
)

我试过了:

Total Sales rolling:=
CALCULATE (averagex(Table1,[Average Total of deals]),
    FILTER (ALL ( dimdate),dimdate[Month] >= MAX (dimdate[Month]) -2&& dimdate[Month] <= MAX ( DimDate[Month])))

我做不到。

我希望有人能看到我出错的地方。

@Marcus

Click here and see my datamodel Thanks

我的数据模式仍然存在问题。

我已经链接了一个非常简单的例子。我希望有一个人可以帮助我。

谢谢

1 个答案:

答案 0 :(得分:1)

请注意,在我使用的示例中,我使用的是[销售]而不是潜在客户。

您要进行的主要结构更改是在dimDates表中创建month_index。拥有该领域的优势在于它可以更轻松地计算超过3个月的总数,因为它可以像在第二个示例中那样去除交叉年份。另一个优点是让month_index处理非标准日历,例如4-4-5

首先:

Sales:=SUM(Data[Qty])

下一部分将计算3个月内的销售额(或潜在客户)。下面我们使用month_index字段来快速定义我们想要求和的日期范围。

3_Month_Sales :=
CALCULATE (
    [Sales],
    FILTER (
        ALL ( dimdate ),
        dimdate[Month_index] <= MAX ( dimdate[Month_index] )
            && dimdate[Month_index]
                >= MAX ( dimdate[Month_index] ) - 2
    )
)

下一部分取决于问题,因为平均值可以通过两种方式计算。主要问题是它是3个月的平均值,还是基于分子是具有大于0的值的月数。

简单的方法:

3_Month_Average:=DIVIDE( [3_Month_Sales], 3)

我学到的更复杂的方法可以将SUMX包装在计算中。计算的想法是查看3个月的时间段,然后sumx按年份逐月迭代。最后,它检查销售额是否大于0,如果分配则为1。那些1的总和

Count_of_Periods :=
CALCULATE (
    SUMX (
        VALUES ( dimdate[Year] ),
        SUMX ( VALUES ( dimdate[Month] ), IF ( [Sales] > 0, 1 ) )
    ),
    FILTER (
        ALL ( dimdate ),
        dimdate[Month_index] <= MAX ( dimdate[Month_index] )
            && dimdate[Month_index]
                >= MAX ( dimdate[Month_index] ) - 2
    )
)

最后

3_Month_Alternative:=DIVIDE([3_Month_Sales], [Count_of_Periods])

下面是使用一些随机样本数据的图像,以及不同字段如何交互。作为示例的一部分,2017年4月的数据被删除,以显示count_of_periods计算如何处理该期间没有数据的事实

enter image description here