Power BI滚动平均函数DAX在柱状图中的正确绘制

3

我在使用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的连续三个值之和。

Column Chart visualization

我应该在DAX中做哪些修改才能正确地进行可视化?请帮忙。


您是将Product3Mth公式用作度量或计算列吗? - ptfaferreira
3个回答

1

看起来在Power BI中,你遇到了一些问题,既涉及源数据中日期格式的问题,也涉及你选择在可视化中显示日期列的方式。但我想我已经搞清楚了。这是我的结果:

enter image description here

只是为了核实一些数字:

(4043 + 20 + 158) / 3 = 1469

(189+ 200 + 207) / 3 = 199

以下是详细信息:

我使用了这个数据集,稍微更改了一些名称以便于编写DAX表达式,并使用 获取数据 导入了它。

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

出于我仍然不清楚的原因,我和您在 Date 列上遇到了相同的问题。但是根据 Power BI社区 的一些提示,我创建了一个像这样的 enter image description here Date2

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
    )
)

现在,如果您插入一个柱形图并将Date2分配给Axis,然后将Moving_Average_3_monthsunAcc一起分配给Values,您将得到以下结果:

enter image description here

这不是我们想要的。因此,请前往可视化设置,并将Date2Date Hierarchy更改为简单的Date2,如下所示:

enter image description here

就是这样:

enter image description here

这里将整个内容以表格的形式呈现,以便您能够查看数字是否正确:

enter image description here

在您的情况下,也许您唯一需要做的就是最后那部分。
请不要犹豫,让我知道它对您有何作用!

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

0
在上一个评论中,我提到了计算值(作为列或度量)的问题,因为根据此,我得出了不同的结果,如下面的示例所示:

enter image description here

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

希望这个例子能帮到您。如果不行,请告诉我!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接