POWER BI 求移动平均的问题

 

研究了两天,今天查阅了一下午的相关文献。总的来说,PowerBI里面有两个重要的概念,一个是列概念,一个是度量值概念,虽然列和度量值都可以使用DAX函数进行求值操作,但是两者所处的上下文是不同的。

很常见的一个错误是把度量值的公式用在了列的计算公式上,就像你提的这个问题一样。如果将这个公式用在度量值上面,就可以准确的计算出来连续数日范围内的求和平均值,但是如果将这个公式放在列的计算过程中,就会导致计算每一行的上下文变成了当前行,所以求平均值的时候得出的数值总是错误的当前行的数值。

PowerBI总的来说主要还是支持采用度量值的概念进行计算。度量值是PowerBI提出来的一种比较新颖且具有实时效应、优于此前Excel表格的一种方法。如果采用度量值,则只需要将计算的公式赋值给度量值,可以在数据可视化时候使用表格、矩阵、图表等方式依据筛选器筛选出的上下文实时计算这些数值。但是一旦采用了列的计算方法,则会将这一列的数值计算完全之后再重新加入到数据表中,完全丧失了PowerBI度量值可以依据筛选器变换上下文随时计算时候的优势。所以许多教程中都会推荐将尽量多可以使用度量值做到的事情用度量值进行计算。当然,如果能够掌握在列计算过程中,自己清楚所处的上下文,也可以使用列计算方式。最后这里给出使用列计算平均值的方法。

目标:生成一列,获取每一行向前N天的所有金额的平均值。

答案:添加列,列名为

前3天平均值 = VAR   cur_date='表'[日期]

RETURN  CALCULATE(AVERAGE('表'[金额]), FILTER(ALL('表'),'表'[日期]<=cur_date && '表'[日期]>=cur_date-2))

以及使用度量值计算平均值的方法。

度量值求平均 = CALCULATE(AVERAGEX(DATESINPERIOD('表'[日期],MIN('表'[日期]),-15,DAY),[度量值金额求和]))

       简而言之,在PowerBI里面,列的DAX计算函数写法和度量值的DAX计算函数写法不同,两者不能简单地直接复制粘贴进行比对。

 

1.为日期创建一个计算列

FullDate =DATE(2020,'Session'[年度月份],1)

 

2.创建3个月移动均线的度量。您可以根据需要更改月份数​​。

 

Moving_Average_3_Months = 
CALCULATE(
    AVERAGEX('Session','Session'[Sessions]),
    DATESINPERIOD(
        'Session'[FullDate],
        LASTDATE('Session'[FullDate]),
        -3,
        MONTH 
    )
)

 

3.如下所示将折线图拖动到画布中。

 

125.jpg

参考:

https://blog.csdn.net/bill20100829/article/details/113916927