首页 > 解决方案 > 如何使用 Power BI 中的当前数据集计算 3 个月的滚动平均值?

问题描述

我是 Power BI 的新手,需要您的帮助。我想创建一个可视化,显示前 3 个月的平均票数,并将其与当月进行比较。有什么简单的方法可以做到这一点?我在网上尝试了很多解决方案,但都不起作用。我认为这是因为我的数据集可能不适合该解决方案。

我的数据:
门票 | 日期
1 | 2019年 6 月 30
日 1 | 2019
年 6 月 10 日 1 | 2019 年 7 月 1 日
0 | 2019
年 7 月 2 日 1 | 2019 年 6 月 30 日

还有更多的列和行。票的价值是 1 或 0,日期可以重复。这是我从 API 收到的数据。

这就是我目前拥有
的数据随着时间的推移会越来越大。我想在我拥有的当前可视化中添加 3 个月的滚动平均线。

谢谢!

标签: powerbi

解决方案


开始了:

首先我创建了一个列 FirstDayMonth,我用它来分组同一个月的所有数据

FirstDayMonth = EOMONTH(Tickets[Date];-1)+1

我的桌子看起来像:

在此处输入图像描述

接下来我创建一个按 FirstDayMonth 分组的汇总表

TicketsMonth = SUMMARIZE(Tickets;Tickets[FirstDayMonth];"Amount"; SUM(Tickets[Tickets]))

我添加一列 Ave3PrevMonth

Ave3PrevMonth = 
    var totalMonths = YEAR(TicketsMonth[FirstDayMonth]) * 12 + MONTH(TicketsMonth[FirstDayMonth]) - 3
    var periodStart = DATE(totalMonths/12;MOD(totalMonths;12);1)
    var periodEnd = TicketsMonth[FirstDayMonth]
return 
    CALCULATE(SUM(TicketsMonth[Amount]);
        FILTER(TicketsMonth; TicketsMonth[FirstDayMonth] >= periodStart && TicketsMonth[FirstDayMonth] < periodEnd))/3

这是一个棘手的问题,因为 Power bi 不适合日期。

我添加了一个额外的列 PeriodStart 以显示取平均值的日期:

PeriodStart = 
    var totalMonths = YEAR(TicketsMonth[FirstDayMonth]) * 12 + MONTH(TicketsMonth[FirstDayMonth]) - 3
return DATE(totalMonths/12;MOD(totalMonths;12);1)

最终结果: 在此处输入图像描述


推荐阅读