You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A common thing with Bigtable is the ability to scan based on a prefix, which is basically a range with start=prefix and end=someAlteration(prefix), but its tricky to do manually.
Any chance we can add a prefix filter that "just works"?
if the string is empty, the end range marker should just be empty string
otherwise, find the last character in the string that can be incremented (ie, abcde can increment position 4, abc\xff\xff can increment position 2.
using that pivot, take start.substr(0, n-1) and append the incremented character (start[n]+1)
I think -- in JS -- this would look something like....
vargetPrefixEndRange=function(start){varmaxChar=String.fromCharCode(0xff);varposition=start.length-1;// Walk backwards until we get to a character we can increment.while(start[position]==maxChar&&position>=0)position--;// If the position is -1, there is no reasonable end range for the prefix.if(position==-1)return'';varnextChar=String.fromCharCode(start.charCodeAt(position)+1)returnstart.substring(0,position)+nextChar;}
Implementing a prefix row scan via row key regex filter is inefficient, because it will scan the entire table, but return only the rows that match. A prefix row scan is typically implemented by computing the exact (start, end) rows, so it will only scan the subset of the table that will actually be returned back to the caller.
Yes -- what @mbrukman said. We want to look at keys only, and stop when we get to "the next one". The little snippet I jotted down gets us "where to stop" (ie, the first non-matching lexicographic key prefix)
A common thing with Bigtable is the ability to scan based on a prefix, which is basically a range with start=prefix and end=someAlteration(prefix), but its tricky to do manually.
Any chance we can add a
prefix
filter that "just works"?Go does this a bit trickily (see https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigtable/bigtable.go#L307), the gist seems to be (for those not familiar with go):
abcde
can increment position 4,abc\xff\xff
can increment position 2.start.substr(0, n-1)
and append the incremented character (start[n]+1
)I think -- in JS -- this would look something like....
Some test cases...
The text was updated successfully, but these errors were encountered: