如何使用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]` 
  1. 然后我会分开小时,分钟和秒钟:

hours, minutes, sec = duration.split(':')

  1. 最后我会将每个转换成秒后进行求和:

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