首页 文章

Power Query中的滚动平均值

提问于
浏览
1

我是Power BI的全新手

我试图在Power BI的Power Query Editor中重现这种类型的计算 .

截图来自Excel,在C列中它使用AVERAGE($ B $ 2:B2),下一行是AVERAGE($ B $ 2:B3),依此类推 .

C2 =((168 313)/ 2)= 241

C3 =(((168 313)301)/ 3)= 261

等等

有没有办法在Power Query中进行这种类型的计算?

enter image description here

2 回答

  • 0

    在Power Query M语言中,您可以执行类似的操作 . 过滤行直到并包括当前行的日期,然后平均 CallsPresent 列 .

    = List.Average(
          Table.SelectRows(
              #"[Previous Step Name Here]",
              (C) => C[FullDate] <= [FullDate]
          )[CallsPresent]
      )
    

    #"[Previous Step Name Here]" 位只是您正在进行选择的表 . 查询编辑器中的查询通常是一次执行一次转换的步骤列表 . 因此,您的新步骤是根据上一步创建自定义列 .

    (C) => 语法有点棘手,但基本上,它用于允许我将我们正在操作的表中的 FullDate#"[Previous Step Name Here]" )与当前步骤中的 FullDate 进行比较 . 查看this blog post了解更多与此相关的信息 .

  • 0

    您可以使用截至当前日期的日期函数 .

    作为计算列,它看起来像这样:

    AvgPresented = 
    CALCULATE(
        AVERAGE(
            Table1[CallsPresent]),
            ALL(Table1),
            Table1[FullDate] <= EARLIER(Table1[FullDate]
        )
    )
    

    或这个:

    AvgPresented:
    AVERAGEX(
        FILTER(
            Table1,
            Table1[FullDate] <= EARLIER(Table1[FullDate])
        ),
        Table1[CallsPresent]
    )
    

    注意: EARLIER 函数指的是较早的行上下文(即当前行中的值),与时间或日期无关 .

相关问题