在 Qliksense 数据加载编辑器中将时间文本字符串转换为整数以进行数字运算的简单方法

Simple way to convert time text strings to ints for numeric operation in Qliksense data load editor

TimeTemp 显示为 168@06:43:23AM

stationTime显示服务区站的开闭时间6AM-10AM

我已将 TimeTemp 分成 2 个不同的列,initialTempinitialTempTime

我已将 stationTime 分成 2 个不同的列,openingTimeclosingTime

想要的条件语句是“如果不在每2小时间隔内,将initialTemp单元格变为红色”,所以逻辑如下:

if(initialTempTime <= openingTime + 2, green(), red())

如果表达式 <= 为真,

应该将 initialTemp 变为绿色,否则变为红色。但是,这已将 initialTemp 个单元格全部变成红色。

这让我怀疑表达式没有被正确计算,只是默认为 else 。我相信这种情况是 initialTempTimeopeningTime 已被确认为文本字符串数据类型。

由于无法将 string + int 评估为真值,因此它默认为 red(),从而将所有 initialTemp 单元格变为红色。

解决方案是将字符串类型转换为 int,这样 openingTime of say 6AM 可以增加 2 小时,并且可以正确评估数字运算。

将时间文本字符串转换为整数以进行条件数值运算的简单方法是什么?

到目前为止的尝试次数:

Time#(SubField(stationTime,'-',1),'hh:mm:ss') as openingTimeTest 这似乎将所有 openingTime 字段转换为 - (null)

Num(Sum(SubField(stationTime,'-',1) + tempRecordingInterval)) as openingTimeRecordingInterval 其中 SET tempRecordingInterval=2;

Keepchar([initialTempTime],'0123456789.') as [initialTempTimeNum]

考虑下面的脚本。 (为了清楚起见,我将它分成多个 steps/loads)

RawData:
Load 
  // convert to time
  Time(Time#( openingTime, 'h:mm:ss')) as openingTime,
  Time(Time#( closingTime, 'h:mm:ss')) as closingTime
;
Load
  // "convert" to time looking string 
  // 6AM will be 6:00:00
  // 6PM will be 18:00:00
  if( index(openingTime, 'AM') > 0, KeepChar(openingTime, '01234567890'),
      KeepChar(openingTime, '01234567890') + 12) & ':00:00' as openingTime,
      
  if( index(closingTime, 'AM') > 0, KeepChar(closingTime, '01234567890'),
      KeepChar(closingTime, '01234567890') + 12) & ':00:00' as closingTime
;
Load
  // split the station time
  SubField(stationTime, '-', 1) as openingTime,
  SubField(stationTime, '-', 2) as closingTime
;
Load * Inline [
stationTime
6AM-10AM
6PM-10PM
];

结果 table 将如下所示:

(显示基于脚本开头的 SET TimeFormat 变量的值)

一旦数据采用 Time 格式,我们就可以像这样 add/subtract 小时:

= time( openingTime + 2 / 24 ) // add two hours to openingTime field

= time( openingTime - 2 / 24 ) // subtract two hours to openingTime field

如果我们 select openingTime 中的“06:00:00” 值,那么两个小时的加法将为我们提供: