Time based stream tasks in Kapacitor

kapacitor
#1

I’m using Kapacitor 1.5. I want to write rule based on last time of record in measurement. I tried following but this does not seem to be possible:

dbrp "db"."rp"

var threshold = 1h
var period = 1h
var every = 1h

var data = stream
    |from()
        .measurement('last_logged')
        .groupBy('device-name')
    |window()
        .period(period)
        .every(every)
    |last('time')
        .as('last_logged_time')

var alert = data
  |alert()
    .message('Device {{ index .Tags "device-name"}} has not logged in ' + string(threshold))
    .crit(lambda: duration(unixNano(now()) - unixNano("last_logged_time"), 1u) > threshold)
    .critReset(lambda: duration(unixNano(now()) - unixNano("last_logged_time"), 1u) < threshold)

alert
  .slack()

I want to run this rule per hour. This rule is not working since last() expects a field, looks like “time” is not available as a field. Can someone suggest approach to make it work ?

I would prefer not to use batch mode since I don’t want those many queries (equal to cardinality of my data) to land on InfluxDB.

Thanks in advance!