首页 > 解决方案 > DAX AVERAGEX 包括 0 表示总平均值

问题描述

我的表代表在生产线上工作的用户。表中的每一行提供用户在 15 分钟窗口内生产的单位数。我正在尝试计算每个用户的单位/小时(这似乎工作正常),但我的总体平均值似乎偏离了。

我的测量表和结果:

在此处输入图像描述

逐行这是我正在寻找的。但是 179.67 的总平均值是错误的。应该是 196。我认为对于 11:30 的时间戳,Leondro 没有任何工作,它包括一个 0。我想排除这一点。

措施:

UPH = 
var unitshour = CALCULATE(SUM(Table1[Units]) / (DISTINCTCOUNT(Table1[DateTime])/4))
var users = AVERAGEX( VALUES(Table1[DateTime]), DISTINCTCOUNT(Table1[Username]))
RETURN

unitshour/ users

标签: powerbidax

解决方案


如果您想平等对待每个时间段,我认为 196 不是您想要的数字。我建议这个替代方案:

UPH =
AVERAGEX (
    VALUES ( Table1[DateTime] ),
    CALCULATE ( 4 * SUM ( Table1[Units] ) / DISTINCTCOUNT ( Table1[Username] ) )
)

如果您希望每个时间段按该时间段内的用户数加权,那么 196 就是您想要的。

UPHUserWeighted =
VAR Summary =
    SUMMARIZE (
        Table1,
        Table1[DateTime],
        Table1[Username],
        "UPH", 4 * SUM ( Table1[Units] ) / DISTINCTCOUNT ( Table1[Username] )
    )
RETURN AVERAGEX ( Summary, [UPH] )

推荐阅读