如何使用Tableau或Excel从数据时间转换为秒数
我有一个数据CSV文件,其中时间持续时间用“常规”date时间语法(如12/30/99 00:00:55 AM
。
由于此值代表持续时间(而不是date和时间),因此我需要将其转换为代表持续时间(例如55
分钟)的数字。
我想知道是否可以使用Tableau的计算字段或Excelexpression式来提取时间00:00:55
部分,并将其转换为表示持续时间(以分钟为单位)的数字?
下面是我将如何使用Python来做到这一点:1.首先,我将分割传入的值以隔离12/30/99 00:00:55 AM
:
`value = '12/30/99 00:00:55 AM'` `duration = value.split()[1]`
- 然后我会分开小时,分钟和秒钟:
hours, minutes, sec = duration.split(':')
- 最后我会将每个转换成秒后进行求和:
seconds = (int(hours)*60*60 + int(minutes)*60 + int(sec))
如果你想这样做,只需在Excel公式中达到秒就可以类似于Python:
=HOUR(A1)*3600+MINUTE(A1)*60+SECOND(A1)
假定可以从CSV文件读取值到单元格A1中的Exceldate时间值。
另一种方式(使用Excel中的时间值是一天中的一小部分)是这样的
=MOD(A1,1)*24*3600
这将是一个非常粗糙的做法,并将依赖于相同的格式。
=(MID(E3,10,2)×60×60)+(MID(E3,13,2)×60)+(MID(E3,16,2))
MID – (单元格引用,起始位置,提取字符数)
这假定值是在E3中,这应该被改变成你有原始值“12/30/99 00:00:55 AM”的那个单元。
链接CSV文件之后,Tableau会继续,并根据自己的假设自动将数据types分配给每列。 原始CSV的“ 持续时间”列字段值实际上是00:00:00:55
。 但是,由于Tableau认为它是date时间types,因此它在开始时被转换为12/30/99 00:00:55 AM
附加于12/30/99 00:00:55 AM
12/30/99
日,而AM
在结尾。 我右键单击持续时间维度(这是Tableau调用列的方式),并将其datetypes更改为String
。 要将此值转换为分钟,我必须使用以下expression式创build自定义计算字段:
INT(SPLIT(STR([Duration]), ':', 1))*60*60*60 + INT(SPLIT(STR([Duration]), ':', 2))*60*60 + INT(SPLIT(STR([Duration]), ':', 3))*60 + INT(SPLIT(STR([Duration]), ':', 4))/60