首页 > 解决方案 > 用户无权查询 bigquery 表

问题描述

我正在使用 bigquery 客户端来查询表中的数据:

query_job = self.bigquery_client.query("SELECT * FROM {0} WHERE AGE={1}".format(table_name, 1))
        results = query_job.result()

这个在服务帐户下的另一个进程中工作(使用 query1):

self.bigquery_client = bigquery.Client().from_service_account_json(self.access_key_path)

对于我在另一个项目下查询另一个表的另一个过程,我无法查询,因为我没有查询该表的权限。

我尝试使用此代码,但仍然收到权限错误(使用 query2):

self.bigquery_client = bigquery.Client()
# or self.bigquery_client = bigquery.Client(project='PROJECT_ID')

如何在不向我的查询提供服务帐户的情况下访问这两个表(2)?

标签: pythongoogle-cloud-platformgoogle-bigquerygoogle-iam

解决方案


您的客户需要通过您要访问的项目的身份验证。

如果您需要查询不同项目中的不同表,您的服务帐户应该在两个项目中都具有权限。另一种方法是每个项目有一个服务帐户并为每个项目创建一个客户端(在您的情况下,您将使用不同的客户端进行不同的查询)。

我建议您使用第一种方法,因为它不仅更实用,而且还避免了一些问题。例如,如果您想在查询中加入两个表,则需要同时访问这两个表,而使用单独的服务帐户是不可能的。


推荐阅读