One thing that I can think of is to sort measurements from the newest to
oldest:
DevA,12pm,150W
DevA,9am,100W
Now instead of scanning from-to date, start with the to date and keep
scanning until you find a row with a date that is older than the from date.
To use your example, start the scan from 1pm and stop when you hit 9am.
To sort row from newest to oldest use MAXINT - timestamp, where
timestamp is seconds since epoch.
Hope this helps.
i.
Oliver Meyn wrote:
Hi all,
I have a table "device_power" which has as its row key
"device_id.timestamp", and a single column, "power". A new row is
written whenever the power consumption of a device changes, which could
be every second, or could be as much as days.
When I do a query like "what was the average power of device X between
Date 1 and Date 2" I can get all keys where device_id matches X (using
PrefixFilter) and timestamp > Date1 and < Date2 (using either RowFilter
or setTimeRange). But I also need the last row before my time range to
know what state the device was in at the start of my query period.
Maybe an example will help make it more obvious (my timestamps are long
integers, but this is easier to read):
DevA.9am, 100W
DevB.10am, 200W
DevB.11am, 150W
DevA.12pm, 150W
And now the query "What was the average power of DevA btw 10am and
1pm". Is there a clever way to "get the first row before 10am that
matches PrefixFilter("DevA") ?
Thanks,
Oliver