用DAX将以秒为单位的数字转换成分钟,小时,和天数显示的时间

有的时候,原始数据对时间的存储是以秒为单位进行的,比如CPU运行了3600秒。对于这种数据,如果直接拿来生成report给用户的体验不是很好,可读性不强。如果把3600秒转换成1小时,就更能让report使用者接受。

这种转换也不难,主要利用数学三角函数进行就可以了。思路就是用秒数先除以86400(1天等于86400秒),得到的商数就是天数。之后用总的秒数减去折合成天数的描述,剩余部分就可以用了计算小时数。计算思路也是用秒数除以3600(1小时=3600秒),商数部分就是小时数。在以此类推,剩下的秒数除以60的商数就是分钟数,余数就是秒数。

之后可以将所的结果拼接起来,就完成了将以秒为单位的数字转换成分钟,小时,和天数显示的时间。

公式如下:

RunTime = 
VAR Duration = CPU[RunSeconds]
VAR Days =
    INT ( Duration / 86400 )
VAR Hours =
    INT ( MOD( Duration - ( Days * 86400 ), 86400 ) / 3600 )
VAR Minutes =
    INT ( MOD ( Duration - ( Hours * 3600 ), 3600 ) / 60 )
VAR Seconds =
    ROUNDUP ( MOD ( MOD ( Duration - ( Hours * 3600 ), 3600 ), 60 ), 0 )
VAR D =
    IF ( LEN ( Days ) = 1, "0" & Days, "" & Days )
VAR H =
    IF ( LEN ( Hours ) = 1, "0" & Hours, "" & Hours )
VAR M =
    IF ( LEN ( Minutes ) = 1, "0" & Minutes, "" & Minutes )
VAR S =
    IF ( LEN ( Seconds ) = 1, "0" & Seconds, "" & Seconds )
RETURN
D & ":" & H & ":" & M & ":" & S

这里写图片描述

猜你喜欢

转载自blog.csdn.net/jessica_seiya/article/details/80757238