以下是一个示例代码,展示了如何按列值查询Bigtable。
from google.cloud import bigtable
from google.cloud.bigtable.row_set import RowSet
def query_bigtable(project_id, instance_id, table_id, column_family_id, column_qualifier, value):
client = bigtable.Client(project=project_id, admin=True)
instance = client.instance(instance_id)
table = instance.table(table_id)
# 创建一个查询范围,只查询指定列族和列
column_range = bigtable.row_filters.ValueRangeFilter(
start_value=value,
end_value=value)
# 创建一个行集合,只包含满足查询条件的行
row_set = RowSet()
row_set.add_row_range(table_id, start_row='', end_row='', filter_=column_range)
# 执行查询
rows = table.read_rows(row_set=row_set)
# 处理查询结果
for row in rows:
# 从行中获取指定列的值
cell = row.cells[column_family_id][column_qualifier][0]
cell_value = cell.value.decode('utf-8')
print(f'Row key: {row.row_key.decode("utf-8")}')
print(f'Column value: {cell_value}')
# 使用示例
project_id = 'your-project-id'
instance_id = 'your-instance-id'
table_id = 'your-table-id'
column_family_id = 'your-column-family-id'
column_qualifier = 'your-column-qualifier'
value = 'your-value'
query_bigtable(project_id, instance_id, table_id, column_family_id, column_qualifier, value)
请注意,在运行此代码之前,您需要先安装google-cloud-bigtable
库,并且已经创建了一个Bigtable实例和表。
上一篇:按列值拆分Excel文件