如何在BigQuery中通过QueryJob获取指定索引的单个行数据?
从BigQuery QueryJob获取单行数据的正确方法
你之前的代码报错是因为query_job.result()返回的是RowIterator迭代器对象,它不支持下标直接访问,所以[0]会触发报错。针对你的单行结果场景,有两种简单的解决方式:
方法1:用next()直接获取第一行
因为你的查询只返回一行,直接用next()从迭代器中取出第一个元素即可:
query_job = self.client.query(count_query) row = next(query_job.result()) count = row[0]
方法2:将迭代器转为列表后取下标
如果习惯用下标访问,可以先把迭代器转成列表,再取第一个元素:
query_job = self.client.query(count_query) rows = list(query_job.result()) count = rows[0][0]
额外优化:给计数列起别名
如果给查询结果的列起个别名,比如:
select count(*) as total_count from ...
那获取值的时候可以直接用列名,可读性更强:
row = next(query_job.result()) count = row.total_count
内容的提问来源于stack exchange,提问作者bigtito
相关产品推荐
相关产品推荐

