微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Power BI 中使用 DAX 计算运行平均值

如何解决在 Power BI 中使用 DAX 计算运行平均值

我在 Table_1 中有以下值:

date             sales_amount
04/01/2021       100.00
04/02/2021       300.00
04/05/2021       500.00

我想计算一个运行平均值,所以每天都会计算平均值,这样我的最终输出看起来像这样:

date             sales_amount       running_average
04/01/2021       100.00             100.00
04/02/2021       300.00             200.00
04/05/2021       500.00             300.00

销售人员没有在 04/0304/04 上工作,所以我想将它们从我的运行平均值中排除。

现在,我的输出看起来像这样,这对我正在做的事情来说是错误的:

date             sales_amount       running_average
04/01/2021       100.00             100.00
04/02/2021       300.00             200.00
04/05/2021       500.00             180.00

有什么建议吗?

现在,我的 DAX 代码如下所示:

test_new = 

VAR LastVisibleDate = MAX('Table_1'[Date])
VAR FirstVisibleDate = MIN('Table_1'[Date])
VAR LastDateWithSales = 
    CALculaTE(
        MAX('Table_1'[Date]),REMOVEFILTERS()
    )

VAR Result = 
    IF (
        FirstVisibleDate <= LastDateWithSales,CALculaTE(
            AVERAGE([Sales_Amount]),Table_1[Date]
        )
    )

RETURN
Result

解决方法

我在最后一个变量中添加了几行:

  1. Table_1[Date] 在最后一个变量中基本上意味着 FILTER ( ALL ( Table_1[Date] ),TRUE ),这将返回所有日期,因此在您的场景中没有用,因为它会给出错误的结果,改为写入 Table_1[Date]

  2. 当您有来自日期表的日期列并且日期表被标记为日期表时,您不需要 REMOVEFILTERS,因为当日期表被标记为日期表时,引擎会自动添加一个 REMOVEFILTERS/ ALL 每当在 Date 列上应用过滤器时,但其他表的 Date 列不会发生这种情况,因此您需要在最后一个变量中编写显式 REMOVEFILTERS

test_new =
VAR LastVisibleDate =
    MAX ( 'Table_1'[Date] )
VAR FirstVisibleDate =
    MIN ( 'Table_1'[Date] )
VAR LastDateWithSales =
    CALCULATE (
        MAX ( 'Table_1'[Date] ),REMOVEFILTERS ()
    )
VAR Result =
    IF (
        FirstVisibleDate <= LastDateWithSales,CALCULATE (
            AVERAGE ( [Sales_Amount] ),Table_1[Date] <= LastVisibleDate,REMOVEFILTERS ( Table_1 )
        )
    )
RETURN
    Result

作为最佳实践,始终使用日期表中的日期列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。