Python BigQuery 脚本 bigquery.jobs.create 错误

Posted

技术标签:

【中文标题】Python BigQuery 脚本 bigquery.jobs.create 错误【英文标题】:Python BigQuery script bigquery.jobs.create error 【发布时间】:2018-10-26 12:52:59 【问题描述】:

我正在尝试通过 python 脚本在 Google BigQuery 上运行一个简单的查询,但我收到以下错误消息,即我的服务帐户缺少 bigquery.jobs.create 权限。

我的服务帐户应用了以下角色:

所有者 BigQuery 管理员 BigQuery 作业用户

我还尝试使用 bigquery.jobs.create 创建自定义角色并将其应用于服务帐户,但仍然始终出现此错误。我做错了什么?

from google.cloud import bigquery
from google.oauth2 import service_account

project_id = "my-test-project"
credentials = service_account.Credentials.from_service_account_file("credentials.json")

client = bigquery.Client(
    credentials=credentials,
    project=project_id
)

print(client.project) # returns "my-test-project"
query = client.query("select 1 as test;")

访问被拒绝:项目 my-test-project:用户 my-service-account @ 我的测试项目。 iam.gserviceaccount.com 没有 项目 my-test-project 中的 bigquery.jobs.create 权限。

【问题讨论】:

嘿@fez,你试过用client = bigquery.Client.from_service_account_json("credentials.json")吗?我怀疑它会有所作为,但只是好奇。 @Dascienz 是的,谢谢!如果您添加为答案,将接受作为解决方案! 嘿@fez,很高兴您的问题得到了简单的解决!快乐的计算! 【参考方案1】:

使用client = bigquery.Client.from_service_account_json("credentials.json") 验证客户端是避免“拒绝访问”错误的首选方法。出于某种原因(我不确定为什么 bigquery 确实使用 oauth 2.0 访问令牌来授权请求​​),通过 google.oauth2.service_account 设置凭据可能会导致权限问题。

【讨论】:

以上是关于Python BigQuery 脚本 bigquery.jobs.create 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python修复在bigquery中上传csv文件

BigQuery - 在插入表时调用查询

为数据集创建了外部 Bigquery 配置单元分区表,但无法查看具有分区键的列

BigQuery 隐藏 UDF 实现

BigQuery:无效日期错误

如何加入 Firebase 和 BigQuery