Power BI滚动平均DAX可以在柱形图上正确绘制

时间:2018-09-26 09:21:33

标签: average powerbi dax

我对第3个月滚动平均值的度量有问题,无法在图表上正确地可视化它。

数据模型在这里:

https://docs.google.com/spreadsheets/d/1naChcuZtjSbk0pVEi1xKuTZhSY7Rpabc0OCbmxowQME/edit?usp=sharing

我正在使用以下公式通过一项措施来计算3个月平均值:

Product3Mth = CALCULATE(SUM('Table'[Product A uncum]);DATESINPERIOD('Table'[Date];LASTDATE('Table'[Date]);-3;MONTH))/3

当我将其绘制为表格时,它显示每个月的正确值。

Table visualisation

但是当我将其与累积的产品A一起绘制在柱形图中时,我得到的值是错误的,该值是产品不合格/ 3的3个连续值之和的产品不合格/ 3的值。

Column Chart visualization

我应该在DAX中进行哪些更改以使其正确可视化?请帮助

3 个答案:

答案 0 :(得分:1)

在源数据中的日期格式和 中显示日期的格式方面,您似乎在这里偶然遇到了许多Power BI“陷阱”可视化中的“日期”列。但是我想我已经解决了。这是我的结果:

enter image description here

只是为了验证一些数字:

APP_ENV

这是详细信息:

我使用了该数据集,在其中稍加更改了名称,以使其更容易编写DAX表达式并使用(4043 + 20 + 158) / 3 = 1469 (189+ 200 + 207) / 3 = 199

导入了它。
Get Data

由于我仍然不知道的原因,我遇到了与Date unAcc ACc 01-10-2017 00:00 4043 4043 01-11-2017 00:00 205 4248 01-12-2017 00:00 158 4406 01-01-2018 00:00 142 4548 01-02-2018 00:00 312 4860 01-03-2018 00:00 258 5118 01-04-2018 00:00 176 5294 01-05-2018 00:00 210 5504 01-06-2018 00:00 189 5693 01-07-2018 00:00 200 5893 01-08-2018 00:00 207 6100 列相同的问题。但是按照Power BI community的一些技巧,我创建了一个enter image description here Date,如下所示:

Date2

然后我使用enter image description here

计算了三个月的平均值
Date2 = 
DATE('Table1'[Date].[Year];'Table1'[Date].[MonthNo];1)

现在,如果您插入Moving_Average_3_Months = CALCULATE ( AVERAGEX ( 'Table1'; 'Table1'[unAcc] ); DATESINPERIOD ( 'Table1'[Date2]; LASTDATE ( 'Table1'[Date2]); -3; MONTH ) ) 并将column chart分配给Date2Axis以及Moving_Average_3_monthsunAcc,则会得到这个:

enter image description here

那不是我们想要的。因此,转到可视化设置,将ValuesDate2更改为简单的Date Hierarchy,如下所示:

enter image description here

就是这样:

enter image description here

这是一个完整的表格,因此您可以看到数字是正确的:

enter image description here

对于您来说,也许唯一要做的就是最后一部分。

请不要犹豫,让我知道如何为您服务!

答案 1 :(得分:0)

我在最后一条评论中询问有关计算值(作为列或度量)的问题,因为基于此我有不同的结果,如下面的示例所示:

enter image description here

Product3Mth基于计算的列,而Product3Mth 2基于度量(您想要的结果!)。

希望此示例可以为您提供帮助。如果不能告诉我!

答案 2 :(得分:0)

DATESINPERIOD和LASTDATE函数将无法正常工作,因为'Table'[Date]不是连续的日期范围。这些功能需要基于日期表。

尝试这样的事情

Product3MthAVG =
VAR rowDate = 'Table'[Date]
RETURN
    CALCULATE (
        SUM ( 'Table'[Product A unaccum] );
        FILTER (
            'Table';
            'Table'[Date]
                < DATE ( YEAR ( rowDate ); MONTH ( rowDate ) + 1; DAY ( rowDate ) )
                && 'Table'[Date]
                    >= DATE ( YEAR ( rowDate ); MONTH ( rowDate ) - 2; DAY ( rowDate ) )
        )
    )
        / 3