繁体   English   中英

Power BI-滚动平均值

[英]Power BI - Rolling average

我试图参考论坛和有关堆栈溢出的其他问题,但是找不到与我的类似的问题。

我使用以下DAX来计算30天移动平均线(我刚刚从“快速测量”中重新修改了原始的时间智能滚动平均线计算)。

30DayQuickMeasureRollingAvg = 
    VAR __LAST_DATE = LASTDATE('DateTable'[Date].[Date])
    RETURN
        AVERAGEX(
            DATESBETWEEN(
                'DateTable'[Date].[Date],
                DATEADD(__LAST_DATE, -30, DAY),
                __LAST_DATE
            ),
            CALCULATE(DISTINCTCOUNT('UserTable'[userID]))
        )

当我使用它时,我的移动平均线图也会显示未来的30天,如下所示

在此处输入图片说明

那么,如何排除未来的时间呢?

我什至从这里尝试了这个@ JTBR2解决方案Power BI滚动平均值

但这也不起作用。

任何帮助深表感谢。

我猜您的日期表中有将来的日期。 您应该可以添加一个条件,使其不显示今天之后的日期,如下所示:

30DayQuickMeasureRollingAvg = 
    VAR __LAST_DATE = LASTDATE('DateTable'[Date].[Date])
    VAR RollingAverage = 
        AVERAGEX(
            DATESBETWEEN(
                'DateTable'[Date].[Date],
                DATEADD(__LAST_DATE, -30, DAY),
                __LAST_DATE
            ),
            CALCULATE(DISTINCTCOUNT('UserTable'[userID]))
        )
    RETURN IF(__LAST_DATE > TODAY(), BLANK(), RollingAverage)

尝试使用以下公式:

Rolling12MonthsSum = 
  var Ldate = date(max('Year'[Year]) , max('Month'[Monthnumber]),1) 
  //Last date

  var Fdate = EDATE(Ldate,-11) //First date

  var pm_hrs = sum(Query1[pm_hrs])/sum(Query1[acthrs]) //Calculation

  return

  if(min('Date'[Date])<fdate,
       blank(),
     if(min('Date'[Date])>Ldate,
               blank(),
              pm_hrs))

现在,我将其使用12个月的总和,您可以将其替换为天数和平均值。 只需将-11更改为-1,它将提供确切的一个月数据输出。

您将需要创建“日期”表或“日历”表来实现此目的。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM