I had to do something similar for a report, where i was logging the time between safety rounds. I logged the tag change events to a mysql database, then created a query data source within the report, and then created a script data source to perform the calculation and write it back to the original data source. This is the part of my code dealing with the time stamp difference.
I don’t know if this can be adapted for your purpose, but it may help.
secondsBetweenRows = []
queryData = data['query'].getCoreResults()
previousTimestamps = {}
for row in range(queryData.getRowCount()):
group = queryData.getValueAt(row, 'unit') + queryData.getValueAt(row, 'station')
if group in previousTimestamps:
# do the calculation
currentTimestamp = queryData.getValueAt(row, 'timeStamp')
secondsBetween = system.date.secondsBetween(previousTimestamps[group], currentTimestamp)
secondsBetweenRows.append(secondsBetween)
previousTimestamps[group] = queryData.getValueAt(row, 'timeStamp')
else:
# first of the group
secondsBetweenRows.append(0)
previousTimestamps[group] = queryData.getValueAt(row, 'timeStamp')
data['query'] = system.dataset.addColumn(queryData, secondsBetweenRows, 'seconds', int)