如何解决Power BI-计算小时> 24小时中两个日期/时间值之间的差,然后计算平均值
我有一个Power BI发布的数据集,并使用DAX尝试计算每个任务的开始日期时间和结束日期时间之间的差(总花费时间),然后计算所有任务的平均总花费时间(小时)。我尝试了几种方法,但都失败了。我没有选择编辑查询或转换数据的选项,因为它已连接到已发布的数据集,我所能做的就是创建测量值,该测量值即使超过24小时也能给出以小时为单位的时差,然后取平均值像下面的例子一样;
Tasks Start DateTime End DateTime Total Time Taken
1 10/08/2020 10:30:00 11/08/2020 10:30:00 24:00:00
2 10/08/2020 11:30:00 12/08/2020 10:30:00 47:00:00
3 12/08/2020 10:30:00 14/08/2020 10:30:00 48:00:00
4 10/08/2020 10:30:00 16/08/2020 10:30:00 144:00:00
所有任务的平均值65:45:00
因此需要你们的帮助来破解解决方案。预先感谢。
解决方法
按如下所示创建度量-
duration_average =
VAR total_second =
AVERAGEX(
your_table_name,DATEDIFF(your_table_name[Start DateTime],your_table_name[End DateTime],SECOND)
)
VAR DAXDay = INT(total_second/(24*60*60))
VAR DAXHours = MOD(INT(total_second/(60*60)),24)
VAR DAXMin = MOD(INT(total_second/60),60)
VAR DAXSec = MOD(total_second,60)
RETURN DAXDay &" Day "& DAXHours &" Hour "& DAXMin &" Minute "& DAXSec &" Second"
,输出将如下所示。您还可以根据原始值创建自己所需的格式输出。
您可以使用以下公式显示每个任务的Total_time_taken:
Total_time_taken = DATEDIFF(CALCULATE(VALUES(Time_Track[Start_Date_Time]),FILTER(Time_Track,Time_Track[Task] = SELECTEDVALUE(Time_Track[Task]))),CALCULATE(VALUES(Time_Track[End_Date_Time]),HOUR)
在此之后,平均时间的计算变得有点棘手,因此我使用以下公式来计算平均时间。如果您想将平均数舍入为小时,那么它会显示正确的值,但是如果您想显示分钟数,则会显示66.75而不是66:45,因为我无法将度量的数据类型更改为时间。
Average_Time_Taken = AVERAGEX(Time_Track,Time_Track[Total_time_taken])
,
以下测量将为您提供确切的输出,如图像中所示:
Total Hours =
var val = SUBSTITUTE(averagex(Sickness,DATEDIFF(Sickness[Start_Date],Sickness[End_Date],HOUR)),".",":")&":00:00"
var ln = LEN(val) - LEN(SUBSTITUTE(val,":",""))
return
IF(ln <= 2,val,LEFT(val,LEN(val)-3))
以上代码的输出如下所示:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。