Python脚本连接BigQuery报错求助:bigquery.tables.get权限被拒绝
解决BigQuery to_gbq权限报错:Permission bigquery.tables.get denied
针对你遇到的报错,以下是几个排查和解决方向:
确认凭证文件对应正确的服务账号
检查代码中加载的GBQ.json是否是你赋予管理员权限的那个服务账号的凭证。可以通过打印服务账号邮箱验证:print(credentials.client_email)确保输出的邮箱和你在BigQuery界面使用的服务账号一致。
验证服务账号的权限绑定
即使你给服务账号分配了管理员角色,也要确认该角色是否正确绑定到项目dbt-shopsergio:- 进入Google Cloud IAM页面,找到对应服务账号
- 检查是否拥有
BigQuery Admin角色(该角色包含bigquery.tables.get等所需权限) - 权限变更可能有1-2分钟延迟,确认后等待片刻再重试
明确指定项目ID
代码中仅指定了数据集和表名,to_gbq可能无法正确识别目标项目。尝试在调用时明确指定项目ID:contratos_final_agora_vai.to_gbq( credentials=credentials, destination_table='curso_etl.etl_csv', project_id='dbt-shopsergio', # 添加项目ID参数 if_exists='replace', table_schema=[ {'name': 'data_inicio_vigencia', 'type': 'DATE'}, {'name': 'data_termino_vigencia', 'type': 'DATE'} ] )或者直接使用完整表名:
destination_table='dbt-shopsergio.curso_etl.etl_csv'排查表存在性与replace逻辑
当if_exists='replace'时,to_gbq会先尝试查询现有表的信息(需要bigquery.tables.get权限)。如果表尚未存在,可先手动在BigQuery界面创建curso_etl.etl_csv表,再运行代码测试是否仍报错。若手动创建后依然报错,说明权限问题未解决。
内容的提问来源于stack exchange,提问作者Sergio Rezende
相关产品推荐
相关产品推荐

