Nice! I thought of this approach but couldn't figure out how to get
Hbase to sort in reverse, and so gave up. But I was clearly too much
"inside the box" :)
Thanks,
Oliver
On 30-May-10, at 5:49 PM, Igor Ranitovic wrote:
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
--
Oliver Meyn
Software Architect
Zerofootprint Software, Inc.
[email protected]
(416) 365-7557 x144