用户无权查询 bigquery table
User does not have permission to query bigquery table
我正在使用 bigquery 客户端查询 table 中的数据:
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)
另外一个进程,我查询另一个项目下的另一个table,我无法查询,因为我没有权限查询table。
我尝试使用此代码,但仍然出现权限错误(使用查询 2):
self.bigquery_client = bigquery.Client()
# or self.bigquery_client = bigquery.Client(project='PROJECT_ID')
如何在不向我的查询提供服务帐户的情况下访问这两个 table(2)?
您的客户端需要通过您要访问的项目的身份验证。
如果您需要查询不同项目中的不同表,您的服务帐户应该在两个项目中都具有权限。另一种方法是每个项目有一个服务帐户并为每个项目创建一个客户端(在您的情况下,您将使用不同的客户端进行不同的查询)。
我建议你使用第一种方法,因为它不仅更实用,而且可以避免一些问题。例如,如果您想在查询中加入两个表,则需要同时访问两个表,而使用单独的服务帐户是不可能的。
我正在使用 bigquery 客户端查询 table 中的数据:
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)
另外一个进程,我查询另一个项目下的另一个table,我无法查询,因为我没有权限查询table。
我尝试使用此代码,但仍然出现权限错误(使用查询 2):
self.bigquery_client = bigquery.Client()
# or self.bigquery_client = bigquery.Client(project='PROJECT_ID')
如何在不向我的查询提供服务帐户的情况下访问这两个 table(2)?
您的客户端需要通过您要访问的项目的身份验证。
如果您需要查询不同项目中的不同表,您的服务帐户应该在两个项目中都具有权限。另一种方法是每个项目有一个服务帐户并为每个项目创建一个客户端(在您的情况下,您将使用不同的客户端进行不同的查询)。
我建议你使用第一种方法,因为它不仅更实用,而且可以避免一些问题。例如,如果您想在查询中加入两个表,则需要同时访问两个表,而使用单独的服务帐户是不可能的。