如何解决ValueRangeFilter 导致错误结果
我正在尝试实现值范围过滤器,但它产生了意想不到的结果。
我在下面创建了代码来复制问题,如果有人能发现问题并解决它,我希望得到帮助。
我创建了一个包含格式为 R00001 到 R00500 的数据的列
我想使用 ValueRangeFilter 来获取特定间隔之间的结果。例如在 R00010 和 R00100 之间 我注意到,当我尝试这样做时,我只返回 R00010 和 R00100,但两者之间什么也没有。
我认为这与字节序和数据在 Bigtable 中的存储方式有关。
import pandas as pd
import random
import datetime
import pytz
from google.cloud import bigtable
import struct
import datetime
import google.cloud.bigtable.row_filters as row_filters
from google.cloud.bigtable.row_set import RowSet
client = bigtable.Client(project='',admin=True)
instance = client.instance("")
table_id = ""
table = instance.table(table_id)
for i in range(0,500):
row_key = f'hello{i}'
print(row_key)
row = table.direct_row(row_key)
cf = "data"
column = "column1"
value = str(i).zfill(5)
value = f'R{value}'
row.set_cell(
cf,column,value,datetime.datetime.now())
row.commit()
#Read
row_set = RowSet()
start_key = f"hello1"
end_key = f"hello500"
row_set.add_row_range_from_keys(
start_key=start_key.encode('utf-8'),end_key=end_key.encode('utf-8'))
rows = table.read_rows(
row_set=row_set,filter_=row_filters.RowFilterChain(
filters = [
row_filters.ColumnQualifierRegexFilter("column1".encode("utf-8")),row_filters.ValueRangeFilter(start_value=b'R00010',end_value=b'R00090'),]
)
)
rowkeys = [row.to_dict() for row in rows]
for item in rowkeys:
print(item)
非常感谢任何人帮助解决上述问题。我当然理解 Row Key 是更好的处理方式,但我想知道为什么 ValueRangeFilter 没有按预期运行。
注意:这是之前类似性质的话题的复活。我已经尝试使用该解决方案,但它仍然有点问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。