2017-07-25 66 views
0

感谢您花时间看我的问题。Excel/DAX平均问题

DAX不允许使用持续时间值,因此为了计算出持续时间值列表的平均值,我们将持续时间分为“小时”,“分钟”和“第二”值。然后将其中的每一个平均化,然后连接成解决方法。

这里的混乱:

在Excel中,当我由86400划分的持续时间 - 在 - 秒值(以及因此格式并[h]:MM:SS),单独的数值总结出精确(例如,10 :49:12来自秒持续时间值,而个人的“小时”,“分钟”和“第二”值分别与-10,49和12相匹配) - 但是当我平均持续时间在秒列,我收到了平均组件时间值并连接它们(用冒号分隔)的不同值。

我相信这会是一件非常简单的事情,所以我希望这里的一位伟大的思想家能够摆脱我的痛苦,并提供一个简洁的解释......这一切都是如此这对我的小小心灵来说很重要;尽管有睡眠剥夺!

非常感谢你提前,

罗布

+0

您是否有最低可重复性样本/数据集? –

+0

@FoxanNg感谢您对我自己的回复中的延迟做出回应并表示歉意。我认为这个问题对于计算引擎而言更为固有,而不是一个特定的数据集 - 我能够通过在Excel中填充一列(使用RANDBETWEEN 0-150000来表示时间 - 秒)并执行相同的计算来复制问题。 编辑:请注意,我将随机数粘贴为值,以使它们不是动态值。 :) – HendrixAndChill

+1

这不是由计算引擎决定的 - 它取决于你采取的方法。如果你10:00:01和09:59:59两次取平均值,结果应该是10:00:00。但是,如果将其分解为组成部分和平均值,则可以得到9.5,29.5和30.根据连接方式的不同,可能会得到10:30:30。与小时分开时,分钟和秒是毫无意义的。当你考虑整个时间时,你只能平均时间。 –

回答

1

我没有问题,使用复制在DAX电力BI的计算。 您可以检查DAX是否与您的相同。

表与100行的随机数据:

table

DurationInSeconds:

DurationInSeconds = RANDBETWEEN(0, 150000) 

小时:

Hour = QUOTIENT('Time'[DurationInSeconds], 3600) 

分钟:

Minute = MOD(QUOTIENT('Time'[DurationInSeconds], 60), 60) 

第二:

Second = MOD('Time'[DurationInSeconds], 60) 

AverageByDurationInSeconds:

AverageByDurationInSeconds = AVERAGE('Time'[DurationInSeconds]) 

AverageByHourMinuteSeconds:

AverageByHourMinuteSecond = AVERAGE('Time'[Hour]) & ":" & AVERAGE('Time'[Minute]) & ":" & AVERAGE('Time'[Second]) 

结果:

results

当然,测量AverageByHourMinuteSeconds没有什么意义,因为小数位必须保留以保证准确性,但计算仍然有效。 (21.9 * 3600 + 29.73 * 60 + 29.77 = 80653.57)

+1

非常感谢您通过这个,但我认为这是更多的情况下,我正在接近它正确的GordonK上述。但我真的非常感谢你的帮助! :)谢谢你,祝你有美好的一天。 – HendrixAndChill