python - 用户无权查询 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)?
解决方案
您的客户需要通过您要访问的项目的身份验证。
如果您需要查询不同项目中的不同表,您的服务帐户应该在两个项目中都具有权限。另一种方法是每个项目有一个服务帐户并为每个项目创建一个客户端(在您的情况下,您将使用不同的客户端进行不同的查询)。
我建议您使用第一种方法,因为它不仅更实用,而且还避免了一些问题。例如,如果您想在查询中加入两个表,则需要同时访问这两个表,而使用单独的服务帐户是不可能的。
推荐阅读
- python - 在创建元类实例之前获取@staticmethod 的签名
- html - 如何在 HTML 和 CSS 中使用很棒的字体?
- angular7 - 注销申请或清除本地存储值后,本地存储值仍返回之前的值
- operating-system - OpenStack 如何将操作系统自动安装到虚拟机中?
- mysql - 如何按 SQL 中的汇总分数对团队进行排序?(使用 SUM() 排序的两列)
- sql-server - SQL Server:更新两个表的连接语句,其中包含现有表中的多个列以匹配
- r - :: 长度为 0 的参数中的闪亮错误 [没有可用的堆栈跟踪]
- keycloak - Keycloak 安装显示错误:线程“主”org.jboss.modules.ModuleLoadException 中的异常
- django - 如何使用带有FilterView mixin的类View处理django-tables2上的提交
- swift - 将子级添加到 SKCropNode 时应用程序冻结