首页 文章

DAX均线不起作用

提问于
浏览
0

我尝试计算DAX power bi中的移动平均线 . 我使用不同的代码,例如这个 .

Moving AverageX 7B Days = 
    AVERAGEX (
    DATESINPERIOD( 
    sahkoInput[Date];
    LASTDATE ( sahkoInput[Date]);
    -7;
    DAY
    );
    sahkoInput[price]
    )

所有代码都给出相同的结果 - 移动AverageX 7B Days等于列“price” . 出了什么问题以及如何解决?

2 回答

  • 0

    首先,我想在您的数据模型中添加日期/日历表 . 这可以像第一个数据点之前至少七天的连续日期列表一样简单,直到您期望最后一个数据点结束之后 . 这样做的原因是DAX中的日期函数在有一个连续日期表时要总是最佳 - 当事实表在特定日期没有任何数据时,您可能会得到不可预测的结果 .

    添加日期表后,创建一个关系以将sahkoInput表中的日期列链接到日期表中的日期列 .

    现在,以下措施应该有效:

    Moving AverageX 7B Days = 
        CALCULATE (
                   AVERAGE('sahkoInput'[Price]);
                   DATESINPERIOD ('DateTable'[Date];
                                   LASTDATE ('DateTable'[Date]);
                                   -7;
                                   DAY)
                  )
    
  • 0

    创建日期表,这将显着提高性能并提高可读性 . 您可以使用以下DAX执行此操作:

    Min Date := MIN('sahkoInput'[Date])
    Max Date := MAX('sahkoInput'[Date])
    
    Dates :=
        VAR BaseCalendar =
            CALENDAR ( [Min Date], [Max date] )
        RETURN
            GENERATE (
                BaseCalendar,
                VAR BaseDate = [Date]
                VAR YearDate =
                    YEAR ( BaseDate )
                VAR MonthNumber =
                    MONTH ( BaseDate )
                RETURN
                    ROW (
                        "Day", BaseDate,
                        "Year", YearDate,
                        "Month Number", MonthNumber,
                        "Month", FORMAT ( BaseDate, "mmmm" ),
                        "Year Month", FORMAT ( BaseDate, "mmm yy" )
                    )
            )
    

    然后引用此日期表,您可以使用标准平均函数创建平均值,如下所示:

    Moving Average 7 Days :=
    CALCULATE (
        AVERAGE ( 'sahkoInput'[Price] );
        KEEPFILTERS ( DATESINPERIOD ( 'Dates'[Date]; MAX ( 'Dates'[Date] ); -7; DAY ) )
    )
    

    我希望这有帮助!

相关问题