Bigtable的时间戳可以基于行而不是基于单元格进行过滤吗?

时间:2019-04-25 16:56:30

标签: google-cloud-bigtable

我正在测试ruby sdk中针对bigtable的read_rows操作。

https://github.com/googleapis/google-cloud-ruby/blob/master/google-cloud-bigtable/lib/google/cloud/bigtable/read_operations.rb#L174

我注意到,如果我传入一个时间戳过滤器,它只会给我在该时间范围内更新/创建的单元格(列)。相反,如果给定的行在指定的时间范围内更新,我希望过滤器为我提供整行的内容。这是一个功能,如果可以的话,可以实现。

例如:我一行中的“令牌”在时间3000更新,  “ id”在时间3000更新,  “名称”在时间3000更新,  “令牌”已在时间7000更新。

我想用时间戳过滤器6000到8000查询,并返回所有单元格,但只有最新的单元格。 在时间7000处为“令牌”,在时间3000处为“ id”,在时间3000处为“名称”。

1 个答案:

答案 0 :(得分:1)

要执行类似的操作,您需要使用Condition过滤器,它带有一些陷阱。这些过滤器往往很慢(因为它们涉及后端行内的回溯)。而且该条件不会与输出原子地评估。

根据您的要求,最好分两个阶段执行此操作。首先,使用时间戳过滤器进行扫描以查看匹配的行。然后,在流回行键时,请完整读取匹配的行,并在客户端确认最近的更新仍满足该时间范围。