首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BigQuery中的Google to_dataframe查询在使用结果()时有效,但在使用to_dataframe()时出现权限问题

问使用BigQuery中的Google to_dataframe查询在使用结果()时有效,但在使用to_dataframe()时出现权限问题
EN

Stack Overflow用户
提问于 2022-07-14 07:08:30
回答 3查看 536关注 0票数 4

在我的pip包和返回查询结果的bigquery连接器升级后,我突然停止了以下错误消息的处理

代码语言:javascript
复制
from google.cloud import bigquery
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file('path/to/file', scopes=['https://www.googleapis.com/auth/cloud-platform',
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/bigquery'
])

client = bigquery.Client(credentials=credentials)
data = client.query('select * from dataset.table').to_dataframe()

PermissionDenied: 403请求失败:用户没有bigquery.readsessions.create的权限

但!如果您将代码切换到

代码语言:javascript
复制
data = client.query('select * from dataset.table').result()

(dataframe ->结果)您收到了RowIterator格式的数据,并且能够正确地读取它们。

使用具有相同凭据的to_dataframe的同一脚本正在服务器上工作。因此,我将bigquery包设置为相同的版本2.28.0,这仍然没有帮助。

我在任何地方都找不到关于这个错误/主题的建议,所以我只想和大家分享一下,如果你们中的任何人面临同样的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-14 20:54:12

从bigquery接收数据有不同的方法。与其他选项相比,对于更大的结果集,使用BQ存储API被认为更有效:

BigQuery存储读取API提供了第三个选项,它代表了对先前选项的改进。当您使用Storage时,结构化数据将以二进制序列化格式通过线路发送。这允许在多个使用者之间为一组结果提供额外的并行性。

Python库在内部决定它是否可以使用烧烤存储API。对于结果方法,它在内部使用传统的方法,而如果安装了相应的包,则使用to_dataframe方法。

然而,使用be的要求您分别拥有bigquery.readSessionUser角色-- readsessions.create权限--在您的示例中,这似乎缺乏.。

通过卸载google bigquery-存储,包又回到了list方法。因此,通过卸载此软件包,您可以解决缺乏权限的问题。

有关细节,请参阅BQ Python Libary文档。

票数 2
EN

Stack Overflow用户

发布于 2022-09-27 17:00:11

只需设置

create_bqstorage_client=False

代码语言:javascript
复制
from google.cloud import bigquery
import os
client = bigquery.Client()
query_job = client.query(query)
df = query_job.result().to_dataframe(create_bqstorage_client=False)
票数 2
EN

Stack Overflow用户

发布于 2022-07-14 07:12:34

分辨率

除了google-cloud-bigquery包,我还安装了包google-cloud-bigquery-storage.。一旦我卸载了它

代码语言:javascript
复制
pip uninstall google-cloud-bigquery-storage

一切又开始运作了!不幸的是,错误消息并不那么简单,因此需要一些时间才能找到:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72976543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档